【问题标题】:Creating a URL Using Java - What's the Best Practice?使用 Java 创建 URL - 最佳实践是什么?
【发布时间】:2018-06-22 14:05:20
【问题描述】:

我有一个正在调用休息服务的应用程序。我需要向它传递一个 URL,现在我正在通过连接一个字符串来创建 URL。

我是这样做的:

String urlBase = "http:/api/controller/";  
String apiMethod = "buy";
String url = urlBase + apiMethod;

上面显然是假的,但重点是我使用的是简单的字符串连接。

这是最佳做法吗?我对 Java 比较陌生。我应该构建一个 URL 对象吗?

谢谢

【问题讨论】:

标签: java url


【解决方案1】:

如果您有一个需要添加一些额外字符串的基本路径,您有 2 个选项:

首先是,使用String.format()

String baseUrl = "http:/api/controller/%s"; // note the %s at the end
String apiMethod = "buy";
String url = String.format(baseUrl, apiMethod);

或者使用String.replace():

String baseUrl = "http:/api/controller/{apiMethod}";
String apiMethod = "buy";
String url = baseUrl.replace("\\{apiMethod}", apiMethod);

这两个答案的好处是,需要插入的字符串不必放在末尾。

【讨论】:

    【解决方案2】:

    如果您使用的是 jersey-client。以下是访问子资源而不使代码丑陋的最佳做法

    资源:/someApp

    子资源: /someApp/getData

        Client client = ClientBuilder.newClient();
        WebTarget webTarget = client.target("https://localhost:7777/someApp/").path("getData");
        Response response = webTarget.request().header("key", "value").get();
    

    【讨论】:

      【解决方案3】:

      如果您使用纯 Java,最好使用专用的 URL 构建类,如果提供的数据在语义上无效,则会引发异常。

      它有各种构造函数,你可以阅读它here

      示例

      URL url = new URL(
         "http",
         "stackoverflow.com",
         "/questions/50989746/creating-a-url-using-java-whats-the-best-practive"
      );
      System.out.println(url);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-17
        • 1970-01-01
        • 1970-01-01
        • 2020-10-19
        • 1970-01-01
        • 1970-01-01
        • 2018-03-13
        相关资源
        最近更新 更多