是否可以在没有方法参数的情况下操纵改造 url?

Is it possible to manipulate retrofit url without method parameter?

网络调用是这样的

@GET("/api/video/{slug}/show")
    void getVideoData(@Path("slug") String slug,Callback<VideoContainerGSON>cb);

现在我需要在“/api”之前添加可变路径,例如:

/en/api/video/{slug}/show

/sp/video/{slug}/show

该参数是全局范围的,因此无需更改设置所有网络调用都将使用相同的语言路径。
问题:有没有办法在没有方法签名的情况下更改它,或者我必须将方法签名更改为

@GET("/{lang}/api/video/{slug}/show")
        void getVideoData(@Path("lang") String lang, @Path("slug") String slug,Callback<VideoContainerGSON>cb);

您可以使用字符串 xmls 来解决您的问题。你可以把你的 api root 放在 string.xml 中,然后在其他 xml 中覆盖它,例如:

  • values/string.xml

    <string name="api_root">http://yourapiroot.com/en</string>

  • values-es/string.xml

    <string name="api_root">http://yourapiroot.com/sp</string>

当您从资源创建适配器集 api root 时,如下面的代码所示:

new RestAdapter.Builder()
.setEndpoint(context.getString(R.string.api_root))
.build()

如果您不想从设备语言中获取其余部分api,您可以在构建RestAdapter[=16= 的方法中设置在api root 中定义语言的参数]

然后你从/api/...开始你的路径例如:

   @GET("/api/video/{slug}/show")
    void getVideoData(@Path("slug") String slug,Callback<VideoContainerGSON>cb);