我已经休息了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调用。
答案 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);
注意:您可以使用相同的界面配置客户端和服务器。