【发布时间】:2021-02-24 09:05:46
【问题描述】:
我想向另一个应用程序发送一个简单的 POST 请求以在那里触发一些操作。
我有一个 quarkus 项目,想从我的 CreateEntryHandler 内部发送请求 - 这可以通过简单的方式实现吗?还是我需要在我的项目中添加类似 Apache Httpclient 的东西?与 quarkus 结合是否有意义?
【问题讨论】:
我想向另一个应用程序发送一个简单的 POST 请求以在那里触发一些操作。
我有一个 quarkus 项目,想从我的 CreateEntryHandler 内部发送请求 - 这可以通过简单的方式实现吗?还是我需要在我的项目中添加类似 Apache Httpclient 的东西?与 quarkus 结合是否有意义?
【问题讨论】:
另一个应用程序,我假设有一个 API 端点?
让我们声明您尝试在其他应用中调用的 API 端点是:
POST /v1/helloworld
从您的 Quarkus 应用程序中,您必须执行以下操作:
--- 在您当前的应用程序中---
密切注意包名。 IT 必须与您的 application.properties 文件完全匹配。
HelloWorldService.java
package com.helloworld.services
@Path("/v1")
@RegisterRestClient
public interface HelloWorldService{
@POST
@Path("/helloworld")
Response callHeloWorld(HelloWorldPojo payloadToSend);
}
//请注意,我们没有在 mp-rest/url 中包含 /v1,为什么?因为它包含在@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"
}
【讨论】: