1 Star 0 Fork 0

MilkCoder/http-url-extractor

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

http-url-extractor

当你们使用Retrofit,并且你们的后台服务提供了多个端口的服务,在某些时候,你可能会需要拿到一个Retrofit Api接口具体的HttpUrl地址;面对着接口上的注解们,你陷入了深思:我TM是真的不想拼接字符串。这时,这个项目的价值就体现出来了!

原理

通过动态代理,模拟Retrofit创建API实例,解析接口、方法以及参数相关的注解,由用户自行决定调用的方法,并提供对应的参数,最终处理成正确的HttpUrl

安装

当前最新版本:

  1. 在根模块的build.gradle的适当位置添加以下代码:

    allprojects {
        repositories {
            ...
            maven { url 'https://jitpack.io' }
        }
    }
    
  2. 在业务模块的build.gradle文件中添加以下代码:

    dependencies {
        implementation 'cn.numeron:http-url-extractor:latest_version'
    }
    

使用

//Retrofit Api接口
interface TestApi {

    @GET("/get")
    suspend fun get(@Query("aaa") value: String): Response<Unit?>

    @POST("post/{position}/{archive}")
    suspend fun post(
        @Path("position") position: Int,
        @Path("archive") archive: String?
    ): Response<Unit?>

}
//使用`baseUrl`或`Retrofit`实例即可初始化,调用`extract`方法即可获取到对应方法的`url`
val httpUrlExtractor = HttpUrlExtractor("http://192.168.3.213:6680/")
    /* 可通过此方法支持自定义注解的解析
    .addAnnotationParser<YourAnnotation> { builder, annotation, parameter ->
        //此Lambda内有ExtractorScope的作用域,可以访问或修改builder的url和path等属性。
        TODO("执行你的解析操作,并设置为builder设置解析结果")
    }
    */

val getUrl = httpUrlExtractor.extract<TestApi> {
    //执行想要获取到HttpUrl的方法
    get("bbb")
}
//getUrl = "http://192.168.3.213:6680/get?aaa=bbb"

val postUrl = httpUrlExtractor.extract<TestApi> {
    post(123, "money")
}
//postUrl = "http://192.168.3.213:6680/post/123/money"

空文件

简介

当你使用Retrofit,但是你不想通过拼接字符串来创建HttpUrl的时候,请看这里。 展开 收起
取消

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/milkcoder/http-url-extractor.git
git@gitee.com:milkcoder/http-url-extractor.git
milkcoder
http-url-extractor
http-url-extractor
master

搜索帮助