在Retrofit中向URL末尾添加参数

7
所以,我正在尝试创建一个REST请求,它看起来像这样:https://api.digitalocean.com/droplets/?client_id=[client_id]&api_key=[api_key] 其中https://api.digitalocean.com是终端节点,@GET("/droplets/")将是注释。我希望自动添加结尾部分,因为对于我所做的任何API请求,它都是相同的,并且将其添加到每个请求中会很麻烦。有没有办法这样做?
2个回答

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
okhttp3 中使用 url() 代替 httpUrl() - Mussa

4
将一个RequestInterceptor实例传递给RestAdapter.Builder,以添加查询参数。
每次API调用时,Retrofit都会调用请求拦截器,从而允许您附加查询参数或替换路径元素。
在此回调中,您将能够为每个请求附加clientIdapiKey查询参数。

这在Retrofit 2中不再起作用了:'( 有办法让它回来吗?我必须将API密钥作为参数添加到每个调用中,以便使用themoviedb.org… - Louis CAD
1
编辑:我添加了一个新的 Retrofit 2 的答案,因为我找到了解决方案。 - Louis CAD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接