【问题标题】:How to change api version in HTTPUtlis?如何更改 HTTPUtlis 中的 api 版本?
【发布时间】:2021-01-29 16:29:20
【问题描述】:

假设我有一些客户端库,其中包含 HttpUtils 类。它有字段 API_VERSION

public class HttpUtils {

    public static final int API_VERSION = 1;

    private static final String JSON_CONTENT_TYPE = "application/json";

    private final CookieStore cookieStore = new BasicCookieStore();

    // Public HTTP request methods

    public <Request extends HttpGetRequest, Response> Response
    get(ConnectionConfig config, String endpoint,
        Request request, Map<String, String> requestHeaders,
        ResponseHandler<Request, Response> handler, int expectedStatusCode) {
        return get(config, endpoint, request, Defaults.DEFAULT_HTTP_TIMEOUT, requestHeaders, handler, expectedStatusCode);
    }


    private static String getEndpointURI(String endpoint) {
        return "/" + UrlParameters.API_SERVICE +
                "/" + UrlParameters.VERSION_PREFIX + API_VERSION +
                "/" + endpoint;
    }

还有我想使用这个客户端调用的第三方 API,但是 API 已经更新,现在他们使用 API_VERSION = 2 来处理一些新的端点。如何正确地从 HTTPUtils 扩展并能够将这两个版本用于我的第三方 API 调用与 v1 和 v2 版本?

【问题讨论】:

  • 您可以在方法的参数中发送API_VERSION的变量
  • HttpUtils 是一个库类,我改不了

标签: java api http versioning


【解决方案1】:

只需创建一个方法,让您覆盖版本而不使其成为最终版本。

public static int API_VERSION = 1;

private static String getEndpointURI(String endpoint, String apiVersion) {

    if (apiVersion != null) {
       API_VERSION = apiVersion;
    }
    return "/" + UrlParameters.API_SERVICE +
           "/" + UrlParameters.VERSION_PREFIX + API_VERSION +
           "/" + endpoint;
}

反正就是这样。

【讨论】:

  • HttpUtils 是一个库类,我无法更改它:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-09
  • 1970-01-01
  • 2019-11-25
相关资源
最近更新 更多