gpt4 book ai didi

java - 如何在 Java POJO 中使用 @OPTIONS 注释调用 JAX-RS Web 服务进行模型化

转载 作者:行者123 更新时间:2023-12-02 13:32:58 27 4
gpt4 key购买 nike

我希望在 RESTful WS @OPTION 注释中使用它作为帮助。我在 http://www.programcreek.com/java-api-examples/index.php?source_dir=AIDR-master/aidr-output/src/main/java/qa/qcri/aidr/output/getdata/GetBufferedAIDRData.java 上找到了一个片段。有代码片段:

 @OPTIONS 
@Produces(MediaType.APPLICATION_JSON)
@Path("/channel/filter/{crisisCode}")
public Response getBufferedAIDRDataPostFilter(@PathParam("crisisCode") String channelCode,
@QueryParam("callback") String callbackName,
@DefaultValue("1000") @QueryParam("count") int count) {
return Response.ok()
.allow("POST", "GET", "PUT", "UPDATE", "OPTIONS", "HEAD")
.header("Access-Control-Allow-Origin", "*")
.header("Access-Control-Allow-Credentials", "true")
.header("Access-Control-Allow-Methods", "POST, GET, PUT, UPDATE, OPTIONS, HEAD")
.header("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With")
.build();
}

但是我没有找到,如何在客户端从上面的定义中调用并获取header等内容。

最佳答案

由于您在 JaxRS REST API 实现中发布了代码片段,因此我下面提供的解决方案也是 JaxRS 客户端实现。这可以使用任何框架以任何语言实现,具体取决于您的要求。

以下代码片段用于在 REST API 端点上调用 OPTIONS 请求并处理其响应。

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
import java.util.List;
import java.util.Map;

public class RestClient {

public static void main(String[] args) {

Client client = ClientBuilder.newBuilder().build();
WebTarget target = client.target("https://<api-base-url>/<resource-path>");

Response response = target.request().options();
Map<String, List<String>> headerMap = response.getStringHeaders();

for (String key : headerMap.keySet()) {
List<String> values = headerMap.get(key);
for (String value : values) {
// The header and its corresponding value can be processed as per the case.
}
}

// This will return a list of all supported HTTP Methods (GET, POST, PUT, ..., etc)
List<String> httpMethods = headerMap.get("Allow");

for (String method : httpMethods) {
if ("GET".equals(method)) {
// Do something
}

if ("POST".equals(method)) {
// Do something
}
...
...
}

response.close();
}
}

Response 类可能公开了更多方法,您可以根据实现的需要探索这些方法。

关于java - 如何在 Java POJO 中使用 @OPTIONS 注释调用 JAX-RS Web 服务进行模型化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43119088/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com