2014-06-06 9 views
8

Quindi voglio ottenere i metadati di un video di youtube (dica questo: https://www.youtube.com/watch?v=qlTA3rnpgzU).Dichiarazione di un endpoint REST di retrofit con valore di query costante

ho intenzione di codificarlo e avvolgerlo in un altro URL in questo modo: http://www.youtube.com/oembed?url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqlTA3rnpgzU&format=json

La mia definizione di interfaccia sarà simile a questa:

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

Questo è tutto bene e dandy, ma I don' t mai voglia di specificare un formato diverso da JSON qui (formato = json è una parte fissa di questo URL).

C'è un modo per specificare questo nella mia dichiarazione di interfaccia e ridurre la mia interfaccia per:

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

Grazie.

risposta

27

Basta metterlo a destra nella relativa URL:

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

In Retrofit 1, possiamo usare @QueryParam annotazione @GET ("endpoint") @QueryParam (name = "constantVariable", value = "constantValue") void normalGet (@Named ("page") int page, callback callback); Riferimento: commento di JakeWharton https://github.com/square/retrofit/issues/103#issuecomment-10738504 –

+0

@ nizam.sp Questo è ancora più semplice. – Sumit

+0

In realtà adesso? –