java - 轻松休息 : How to send an easy POST request with parameters and api key

标签 java resteasy

我是一名初学者,我对 Resteasy 有点迷茫

我想发送一个带有类似于以下 URL 的发布请求:http://myurl.com/options?value=3name=picture

String myValue = "3";
String myName = "picture";
String key = "topsecret";

我不太确定接下来会发生什么。我看过几个教程类(class)(我不太清楚)和另一种类似的方式

final MultivaluedMap<String, Object> queryParams = new MultivaluedMapImpl<>();
queryParams.add("value", myValue);
queryParams.add("name", myPicture);
final ResteasyClient client = new ResteasyClientBuilder().build();
final ResteasyWebTarget target = client.target(url).queryParams(queryParams);;
final Builder builder = target.request();

当我写作时,我有很多警告。这是正确的做法吗? API key 怎么样?

最佳答案

首先,您必须检查要使用的 API 的文档,了解如何将 API key 发送到服务器。 并非所有 API 都遵循相同的方法。

出于示例目的,我们假设 API key 必须在 X-Api-Key header 中发送。这是一个非标准,我编写它只是为了演示如何使用客户端 API。

所以你可以得到以下内容:

// Create a client
Client client = ClientBuilder.newClient();

// Define a target
WebTarget target = client.target("http://myurl.com/options")
                         .queryParam("value", "3")
                         .queryParam("name", "picture");

// Perform a request to the target
Response response = target.request().header("X-Api-Key", "topsecret")
                          .post(Entity.text(""));

// Process the response
// This part is up to you

// Close the response
response.close();

// Close the client
client.close();

上面的代码使用了JAX-RS API,它是由RESTEasy实现的。您最好使用Client而不是ResteasyClient尽可能确保与其他实现的可移植性。

上面的代码还假设您想要在请求负载中发送空文本进行相应修改。

Response包含未使用的实体输入流的实例应该关闭。这是仅处理响应 header 和状态代码而忽略响应实体的典型场景。

<小时/>

超出了问题的范围,请记住 Client实例是管理底层客户端通信基础设施的重量级对象。因此初始化以及 Client 的处置实例可能是一个相当昂贵的操作。

documentation建议仅创建少量 Client实例并在可能的情况下重用它们。它还指出Client实例在处置之前必须正确关闭,以避免资源泄漏。

关于java - 轻松休息 : How to send an easy POST request with parameters and api key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46172114/

相关文章:

java - 扩展 Eclipse Java 项目向导的最佳方式?

java - 在 weblogic : cannot cast to com. sun.xml.ws.spi.db.DatabindingProvider 上部署 webservice 时出错

java - 为什么在第一种情况下会抛出 SessionFactory 异常?

ajax - Apache Tomcat 8.5.2 + Resteasy CORS 过滤器突然停止工作

java - RestEasy + hibernate + JBoss EAP 5.1.1

java - 带有 slider 的 Java 中的二次方程

java - 逐行写入文本文件

java - 如何在 JAX-RS 中提供已压缩的内容?

java - 如何使用 TDD 实现 Restful 客户端代码示例

java - REST - 从响应中获取资源 URI(不是 ClientResponse)