如何使用restEasy在同一过程中从rest api调用另一个restapi

时间:2017-03-06 09:24:21

标签: rest jax-rs resteasy

我已经休息了api'/ users / {id} / checkin',其中我想做一些处理并在不同的资源上调用另一个rest api但是在相同的服务中。例如。

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.

}

知道怎么做吗?因为我想避免HTTPclient调用。

1 个答案:

答案 0 :(得分:1)

将所有方法定义和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);

注意:您可以使用相同的界面配置客户端和服务器。