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

时间:2015-03-17 09:23:46

标签: retrofit

网络通话就像这样

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

现在我需要在&#34; / api&#34;之前添加可靠的路径。 e.g:

/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);

1 个答案:

答案 0 :(得分:3)

您可以使用字符串xmls来解决您的问题。您可以将api根目录放在string.xml中,并在其他xmls中覆盖它,例如:

    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,你可以设置params,用于在你构建的方法中定义api根中的语言RestAdapter

之后,您从/api/...开始路径,例如:

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