本文介紹了從Quarkus/Java發(fā)送簡(jiǎn)單的POST請(qǐng)求的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
我要向另一個(gè)應(yīng)用程序發(fā)送一個(gè)簡(jiǎn)單的POST請(qǐng)求以在那里觸發(fā)一些操作。
我有一個(gè)Quarkus項(xiàng)目,并希望從我的CreateEntryHandler內(nèi)部發(fā)送請(qǐng)求–這可以以一種簡(jiǎn)單的方式實(shí)現(xiàn)嗎?或者我需要在我的項(xiàng)目中添加一些類似于ApacheHttpClient的東西嗎?它和夸克結(jié)合在一起有意義嗎?
推薦答案
我假設(shè)另一個(gè)應(yīng)用程序有一個(gè)API Endpoint?
讓我們說(shuō)明您嘗試在其他應(yīng)用程序中調(diào)用的API終結(jié)點(diǎn)是:
POST/v1/HelloWorld
在Quarkus應(yīng)用程序中,您必須執(zhí)行以下操作:
將RestClient*注冊(cè)為服務(wù)
在配置屬性中指定服務(wù)信息
注入并使用此服務(wù)
-在您當(dāng)前的應(yīng)用程序中-
請(qǐng)密切注意包名。它必須在您的應(yīng)用程序.properties文件中完全匹配。
HelloWorldService.java
package com.helloworld.services
@Path("/v1")
@RegisterRestClient
public interface HelloWorldService{
@POST
@Path("/helloworld")
Response callHeloWorld(HelloWorldPojo payloadToSend);
}
//請(qǐng)注意,我們沒有在MP-rest/url中包含/v1,為什么?因?yàn)樗贎RestClient路徑中。
更新您的應(yīng)用程序.屬性以包括以下內(nèi)容:
com.helloworld.services.HelloWorldService/mp-rest/url=https://yourOtherApplication.com/API
-您將作為有效負(fù)載發(fā)送的HelloWorldPojo
HelloWorldProjo.java
@JsonPropertyOrder({"id", "name"})
public class HelloWorldProjo{
private long id;
private String name;
//Setters
//Getters
}
在您實(shí)際要使用它的另一個(gè)服務(wù)中:
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請(qǐng)求隨后將轉(zhuǎn)到https://yourOtherApplication.com/API/v1/helloworld
json將如下所示:
{
"id":123,
"name":"whee"
}
非常棒的閱讀:https://quarkus.io/guides/rest-client
這篇關(guān)于從Quarkus/Java發(fā)送簡(jiǎn)單的POST請(qǐng)求的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,