从 Quarkus/Java 发送简单的 POST 请求

RNH*_*RNH 10 java post request quarkus

我想向另一个应用程序发送一个简单的 POST 请求以触发其中的某些操作。

我有一个 quarkus 项目,想要从 CreateEntryHandler 内部发送请求 - 这可以通过简单的方式实现吗?或者我是否需要将 Apache Httpclient 之类的东西添加到我的项目中?与 quarkus 结合有意义吗?

Sus*_*afa 23

我假设另一个应用程序有一个 API 端点?

让我们声明您尝试在其他应用程序中调用的 API 端点是:

邮政 /v1/helloworld

在您的 Quarkus 应用程序中,您必须执行以下操作:

  • 注册 RestClient *作为服务
  • 在配置属性中指定服务信息
  • 注入并使用该服务

--- 在您当前的应用程序中 ---

请密切注意包名称。它必须与您的 application.properties 文件中的完全匹配。

HelloWorldService.java

package com.helloworld.services

@Path("/v1")
@RegisterRestClient
public interface HelloWorldService{

    @POST
    @Path("/helloworld")
    Response callHeloWorld(HelloWorldPojo payloadToSend);
}
Run Code Online (Sandbox Code Playgroud)

//注意,我们没有将 the 包含/v1在 the 中mp-rest/url,为什么?因为它包含在@RestClient路径中。

更新您的application.properties以包含以下内容:

com.helloworld.services.HelloWorldService/mp-rest/url=https://yourOtherApplication.com/API 
Run Code Online (Sandbox Code Playgroud)

--- 您将作为有效负载发送的 HelloWorldPojo

HelloWorldProjo.java

@JsonPropertyOrder({"id", "name"})
public class HelloWorldProjo{

  private long id;
  private String name;

  //Setters
  //Getters

}
Run Code Online (Sandbox Code Playgroud)

在您实际想要使用它的另一个服务中:

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);

   } 

}
Run Code Online (Sandbox Code Playgroud)

然后 POST 请求将转到https://yourOtherApplication.com/API/v1/helloworld

json 看起来像:

{
  "id":123,
  "name":"whee"
}
Run Code Online (Sandbox Code Playgroud)

真的很棒的阅读: https: //quarkus.io/guides/rest-client