使用常量查询值声明改进的REST端点

cop*_*lii 14 java retrofit

所以我想获取YouTube视频的元数据(比如说这个:) https://www.youtube.com/watch?v=qlTA3rnpgzU.

我要对它进行编码并将其包装在另一个URL中,如下所示: http://www.youtube.com/oembed?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqlTA3rnpgzU&format=json

我的界面定义如下所示:

public interface YoutubeApi {
    @GET ("oembed") 
    YoutubeMetaData metaData (@Query (QUERY_VIDEO_URL) final String url,
                              @Query(QUERY_FORMAT) final String alwaysJson);
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,花花公子,但我不想在这里指定除JSON之外的任何格式(format = json是这个url的固定部分).

有没有办法在我的接口声明中指定它并将我的接口减少到:

public interface YoutubeApi {
    @GET ("oembed") 
    @Magic ("format=json")
    YoutubeMetaData metaData (@Query (QUERY_VIDEO_URL) final String url);
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jak*_*ton 39

只需将其放在相对URL中:

public interface YoutubeApi {
  @GET("oembed?format=json") 
  YoutubeMetaData metaData(@Query(QUERY_VIDEO_URL) String url);
}
Run Code Online (Sandbox Code Playgroud)

  • 在改造1中,我们可以使用@QueryParam批注@GET(“ endpoint”)@QueryParam(name =“ constantVariable”,value =“ constantValue”)void normalGet(@Named(“ page”)int页面,Callback <MyResponse>回调); 参考:杰克沃顿的评论https://github.com/square/retrofit/issues/103#issuecomment-10738504 (2认同)