【问题标题】:Send a simple POST request from Quarkus/Java从 Quarkus/Java 发送一个简单的 POST 请求
【发布时间】:2021-02-24 09:05:46
【问题描述】:

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

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

【问题讨论】:

    标签: java post request quarkus


    【解决方案1】:

    另一个应用程序,我假设有一个 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);
    }
    

    //请注意,我们没有在 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"
    }
    

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

    【讨论】:

    • 嘿伙计,首先谢谢你!!这个真的帮到我了。老实说,我在 quarkus 中很菜鸟 - @RegisterRestClient 似乎没有被识别,我需要什么包?我将 org.eclipse.microprofile.rest.client 添加到我的 pom.xml 中,但它似乎没有帮助。任何的想法?再次感谢:)
    • io.quarkusquarkus-rest-clientio.quarkusquarkus-rest-client-jackson
    • 已修复!如果您不介意:如何向此 POST 请求添加一些简单的 JSON? [抱歉在这里聊天]
    • 抱歉回复晚了 - 不错的更新。像魅力一样工作!非常感谢我的朋友:)
    猜你喜欢
    • 2011-04-16
    • 2022-11-17
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多