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

2023-09-03 14:19:33 作者:小男神i

我要向另一个应用程序发送一个简单的POST请求以在那里触发一些操作。

我有一个Quarkus项目,并希望从我的CreateEntryHandler内部发送请求--这可以以一种简单的方式实现吗?或者我需要在我的项目中添加一些类似于ApacheHttpClient的东西吗?它和夸克结合在一起有意义吗?

推荐答案

亿速云高防IP用户端管理控制台 全量日志 功能,为用户提供更直观 清晰 具体的访问日志明细与生成针对性的智能防御建议

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

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

POST/v1/HelloWorld

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

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

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

请密切注意包名。它必须在您的应用程序.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路径中。

更新您的应用程序.属性以包括以下内容:

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