我使用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;
但我不知道这是否有可能做到这一点,而不是如何做到这一点
答案 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();
}