2017-03-06 30 views
0

我有其他api'/ users/{id}/checkin',我想在其中執行一些處理並在不同的資源上調用另一個rest API,但是使用相同的服務。例如。如何使用restEasy在同一進程中調用另一restapi使用restEasy

ServiceResource.java 
@GET 
@path(/services/checkin/) 
public Response checkinUser(User user) 
{ 

     // --- processing. 
    } 


    UserResource.Java 
@POST 
@path(/users/{id}/checkin/) 
public Response verifyUser(@PathParam("id) String id) 
{ 

     // --- Get the users from the iD. 
     User user = getUsers(id); 

     // --- need to call service from the serviceResource. 

} 

任何想法如何做到這一點?因爲我想避免HTTP客戶端調用。

+0

這是一個公共方法,只是將它稱爲正常函數。製作一個對象並且調用它。 – Rjiuk

+0

你好Rjiuk,謝謝你的回覆,但我不想做同樣的事情,因爲我希望它鬆散地加上它。調用方法會添加直接的依賴關係。 – user4828248

回答

0

將所有方法定義和resteasy註釋放在一個接口中,並將此接口用作resteasy代理框架的輸入。

有關詳細信息,請參閱documentation

ServiceResourceIF.java:

public interface ServiceResourceIF { 

    @GET 
    @path(/services/checkin/) 
    public Response checkinUser(User user); 

} 

調用代碼看起來是這樣的(從RestEasy的原文檔被盜,見上面的鏈接):

User = new User(...); 

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("http://your.service.url/base/uri"); 
ResteasyWebTarget rtarget = (ResteasyWebTarget)target; 

ServiceClient service = rtarget.proxy(ServiceResourceIF.class); 
service.checkinUser(user); 

注意:您可以使用相同的接口來配置客戶端和服務器。

+0

馬丁你好,謝謝你的回覆, – user4828248

+0

如果能幫助你,你可以請upvote或接受答案嗎?謝謝! – martinw

+0

但是,有沒有什麼辦法可以從URL中直接獲取方法或從提供的URL的resteasy調用方法。 – user4828248

相關問題