声明具有常量查询值的改造 REST 终结点

2022-09-02 05:22:16

所以我想获取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);
}

这一切都很好,但我不想在这里指定JSON以外的任何格式(format=json是这个URL的固定部分)。

有没有办法在我的接口声明中指定这一点,并将我的接口简化为:

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

谢谢。


答案 1

只需将其放在相对URL中:

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

答案 2

在 kotlin 中,您可以指定默认参数:

interface YoutubeApi {

    @GET ("oembed") 
    suspend fun metaData (
        @Query (QUERY_VIDEO_URL) url: String,
        @Query(QUERY_FORMAT) alwaysJson: String = "json"
    ): Response<YoutubeMetaData>

}

推荐