从 Quarkus/Java 发送一个简单的 POST 请求
Send a simple POST request from Quarkus/Java
我想向另一个应用程序发送一个简单的 POST 请求以在那里触发一些操作。
我有一个 quarkus 项目,想从我的 CreateEntryHandler 内部发送请求 - 这是否可以通过简单的方式实现?或者我需要在我的项目中添加类似 Apache Httpclient 的东西吗?结合quarkus有意义吗?
另一个应用程序,我假设有一个 API 端点?
让我们声明您尝试在其他应用程序中调用的 API 端点是:
POST /v1/helloworld
在您的 Quarkus 应用程序中,您必须执行以下操作:
- 注册一个 RestClient *作为服务
- 在配置属性中指定服务信息
- 注入并使用此服务
--- 在您当前的申请中 ---
密切注意包名。 IT 必须与您的 application.properties 文件完全匹配。
HelloWorldService.java
package com.helloworld.services
@Path("/v1")
@RegisterRestClient
public interface HelloWorldService{
@POST
@Path("/helloworld")
Response callHeloWorld(HelloWorldPojo payloadToSend);
}
//请注意,我们没有将 /v1
包含在 mp-rest/url
中,为什么?因为它包含在 @RestClient
路径中。
更新您的 application.properties 以包括以下内容:
com.helloworld.services.HelloWorldService/mp-rest/url=https://yourOtherApplication.com/API
--- 您将作为负载发送的 HelloWorldPojo
HelloWorldProjo.java
@JsonPropertyOrder({"id", "name"})
public class HelloWorldProjo{
private long id;
private String name;
//Setters
//Getters
}
在您实际想要使用它的另一个服务中:
ServiceWhichCallsYourOtherAPI.java
@RequestScoped
public class ServiceWhichCallsYourOtherAPI{
@Inject
@RestClient
HelloWorldService helloWorldService;
public void methodA(){
HelloWorldPojo payloadToSend = new HelloWorldPojo();
payloadToSend.setId(123);
payloadToSend.setName("whee");
helloWorldService.callHelloWorld(payloadToSend);
}
}
POST 请求将转到 https://yourOtherApplication.com/API/v1/helloworld
json 看起来像:
{
"id":123,
"name":"whee"
}
我想向另一个应用程序发送一个简单的 POST 请求以在那里触发一些操作。
我有一个 quarkus 项目,想从我的 CreateEntryHandler 内部发送请求 - 这是否可以通过简单的方式实现?或者我需要在我的项目中添加类似 Apache Httpclient 的东西吗?结合quarkus有意义吗?
另一个应用程序,我假设有一个 API 端点?
让我们声明您尝试在其他应用程序中调用的 API 端点是:
POST /v1/helloworld
在您的 Quarkus 应用程序中,您必须执行以下操作:
- 注册一个 RestClient *作为服务
- 在配置属性中指定服务信息
- 注入并使用此服务
--- 在您当前的申请中 ---
密切注意包名。 IT 必须与您的 application.properties 文件完全匹配。
HelloWorldService.java
package com.helloworld.services
@Path("/v1")
@RegisterRestClient
public interface HelloWorldService{
@POST
@Path("/helloworld")
Response callHeloWorld(HelloWorldPojo payloadToSend);
}
//请注意,我们没有将 /v1
包含在 mp-rest/url
中,为什么?因为它包含在 @RestClient
路径中。
更新您的 application.properties 以包括以下内容:
com.helloworld.services.HelloWorldService/mp-rest/url=https://yourOtherApplication.com/API
--- 您将作为负载发送的 HelloWorldPojo
HelloWorldProjo.java
@JsonPropertyOrder({"id", "name"})
public class HelloWorldProjo{
private long id;
private String name;
//Setters
//Getters
}
在您实际想要使用它的另一个服务中:
ServiceWhichCallsYourOtherAPI.java
@RequestScoped
public class ServiceWhichCallsYourOtherAPI{
@Inject
@RestClient
HelloWorldService helloWorldService;
public void methodA(){
HelloWorldPojo payloadToSend = new HelloWorldPojo();
payloadToSend.setId(123);
payloadToSend.setName("whee");
helloWorldService.callHelloWorld(payloadToSend);
}
}
POST 请求将转到 https://yourOtherApplication.com/API/v1/helloworld
json 看起来像:
{
"id":123,
"name":"whee"
}