Retrofit2 动态更改终端点

huangapple go评论62阅读模式
英文:

Retrofit2 Dynamically change endpoint

问题

Here is the translated part:

这是翻译好的部分:

是否可以动态更改一个端点<br>。
我有以下代码,它正在工作<br>。
现在我想要使用相同的函数,根据一些参数,端点更改为/api/v1/contents。<br>
动态更改"/api/v1/contents_dev"为"/api/v1/contents"。

英文:

Is it possible to dynamically change an endpoint.<br>
I have the following code which is working.<br>
Now I want to use the same function, and depending of some parameters the endpoint changes to /api/v1/contents. <br>
Changing "/api/v1/contents_dev" to "/api/v1/contents" dynamically.

@GET(&quot;/api/v1/contents_dev&quot;)
    fun cmsContents(
        @Query(&quot;fields&quot;) fields: String,
        @Query(&quot;ids&quot;) ids: String,
        @Query(&quot;filters&quot;) filters: String
    ): Observable&lt;ContentsDevModel&gt;

    fun getCmsContents(
        context: Context,
        observer: Observer&lt;ContentsDevModel&gt;
    ): Subscription {
        return create(context)
            .cmsContents(
                &quot;linkType.linkUrl,image&quot;,
                &quot;89746946&quot;,
                &quot;rain&quot;
            )
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(observer)
    }

答案1

得分: 2

你可以使用@Path注解来实现这一点。

@GET("/api/v1/{thePath}")
fun cmsContents(
    @Path("thePath") path: String,
    @Query("fields") fields: String,
    @Query("ids") ids: String,
    @Query("filters") filters: String
): Observable<ContentsDevModel>
英文:

You can use the @Path annotation for that.

@GET(&quot;/api/v1/{thePath}&quot;)
fun cmsContents(
    @Path(&quot;thePath&quot;) path: String,
    @Query(&quot;fields&quot;) fields: String,
    @Query(&quot;ids&quot;) ids: String,
    @Query(&quot;filters&quot;) filters: String
): Observable&lt;ContentsDevModel&gt;

答案2

得分: 1

@GET("/api/users/{dynamic_params}")
public Call<UserApiResponse> getUser(@Path("dynamic_params") String dynamic_params);

or if you can use @ url parameters

@GET
Call<ResponseBody> dynamicurl(@Url String url);
英文:

@GET("/api/users/{dynamic_params}")

public Call<UserApiResponse> getUser(@Path("dynamic_params") String dynamic_params);

or if you can use @ url parameters

@GET

Call<ResponseBody> dynamicurl(@Url String url);

huangapple
  • 本文由 发表于 2023年6月12日 17:51:46
  • 转载请务必保留本文链接:https://go.coder-hub.com/76455466.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定