从 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"
}

非常棒的阅读:https://quarkus.io/guides/rest-client