如何获取被叫方法的网址重新安排

时间:2015-03-19 15:35:04

标签: rest java-ee resteasy

我使用Restaeasy(java)创建一个Rest服务,它必须返回被调用但具有一个新字符串的相同URL

示例呼叫服务:

发布=> mybase / myservice / somewrite带有一些JSON
| Reponse => mybase /为MyService / somewrite / 123456

所以我想用一个通用逻辑制作 mybase / myservice / somewrite 网址,因为如果我放String returnURL="mybase/myservice/somewrite";并且我更改了例如mybase的名称反应不会很好

我想要这样的事情

someLogicService(JSON);
id=getId();
URL=getContextCallURL();
return URL+\/+id;

但我不知道这是否有可能做到这一点,而不是如何做到这一点

2 个答案:

答案 0 :(得分:3)

您还可以使用资源中的注释UriInfo注入Context类型的实例,如下所述:

@Context
private UriInfo uriInfo;

@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
public Response makeContact(Contact contact)  {
    String requestUri = uriInfo.getRequestUri();
    (...)
}

希望它可以帮到你, 亨利

答案 1 :(得分:0)

我找到了问题的答案,我将@context的httpRequest注入我的函数并调用absolutPath:

 @POST
 @Path("/")
 @Consumes(MediaType.APPLICATION_JSON)
 public Response makeContact(Contact contact, @Context HttpRequest request)  {
        return Response.ok().header("location", request.getUri().getAbsolutePath().getPath() + contactService.makeContact(contactJSON)).build();
    }