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

时间:2014-06-06 01:22:14

标签: java retrofit

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

我要编码并将其包装在另一个网址中: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);
}

感谢。

2 个答案:

答案 0 :(得分:36)

只需将其放在相对网址中即可:

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

答案 1 :(得分:0)

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

function request(opts) {
  https
    .request(opts, function (res) {

      // IS THIS WHERE I GET THE REQUEST BODY, BUT HOW
      // I NEED TO PUT IT IN A VARIABLE
      res.setEncoding('utf8');
      let body = ''; 
      res.on('data', chunk => body += chunk);
      res.on('end', () => {
          
          console.log(body);
          let json = JSON.parse(body);
          console.log(json.state);

      }
    })
    .end(opts.body || "");
}