2017-03-06 29 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

相关问题