在Retrofit中将参数添加到URL的末尾

时间:2014-03-09 00:24:24

标签: java rest retrofit

所以,我正在尝试发出如下所示的REST请求:https://api.digitalocean.com/droplets/?client_id=[client_id]&api_key=[api_key]

其中https://api.digitalocean.com是端点,@GET("/droplets/")是注释。我希望自动添加结束位,因为它对于我发出的任何API请求都是相同的,并且将它添加到每个请求会很麻烦。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:7)

这是我的Retrofit 2的拦截器:

    private static class AuthInterceptor implements Interceptor {

    private String mApiKey;

    public AuthInterceptor(String apiKey) {
        mApiKey = apiKey;
    }

    @Override
    public Response intercept(Chain chain) throws IOException {
        HttpUrl url = chain.request().httpUrl()
                .newBuilder()
                .addQueryParameter("api_key", mApiKey)
                .build();
        Request request = chain.request().newBuilder().url(url).build();
        return chain.proceed(request);
    }
}

答案 1 :(得分:4)

RequestInterceptor实例传递给添加查询参数的RestAdapter.Builder

Retrofit将为每个API调用调用请求拦截器,允许您附加查询参数或替换路径元素。

在此回调中,您可以为每个请求附加clientIdapiKey个查询参数。