如何获取被调用方法resteasy的url
How to get the url of called method resteasy
我用 Restaeasy (java) 制作了一个 Rest 服务,它必须 return 与被调用的 URL 相同,但有一个新字符串
示例呼叫服务:
Post => mybase/myservice/somewrite 和一些 JSON
|响应 => mybase/myservice/somewrite/123456
所以我想用一种通用逻辑制作 mybase/myservice/somewrite url,因为如果我输入 String returnURL="mybase/myservice/somewrite";
并且我改变了例如mybase
的名字反响不好
我想要这样的东西
someLogicService(JSON);
id=getId();
URL=getContextCallURL();
return URL+\/+id;
但是我不知道这是否可行,更不知道怎么做
我找到了我的问题的答案,我用 @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();
}
您还可以在资源中使用注释 Context
注入类型 UriInfo
的实例,如下所述:
@Context
private UriInfo uriInfo;
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
public Response makeContact(Contact contact) {
String requestUri = uriInfo.getRequestUri();
(...)
}
希望对你有帮助,
蒂埃里
我用 Restaeasy (java) 制作了一个 Rest 服务,它必须 return 与被调用的 URL 相同,但有一个新字符串
示例呼叫服务:
Post => mybase/myservice/somewrite 和一些 JSON
|响应 => mybase/myservice/somewrite/123456
所以我想用一种通用逻辑制作 mybase/myservice/somewrite url,因为如果我输入 String returnURL="mybase/myservice/somewrite";
并且我改变了例如mybase
的名字反响不好
我想要这样的东西
someLogicService(JSON);
id=getId();
URL=getContextCallURL();
return URL+\/+id;
但是我不知道这是否可行,更不知道怎么做
我找到了我的问题的答案,我用 @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();
}
您还可以在资源中使用注释 Context
注入类型 UriInfo
的实例,如下所述:
@Context
private UriInfo uriInfo;
@POST
@Path("/")
@Consumes(MediaType.APPLICATION_JSON)
public Response makeContact(Contact contact) {
String requestUri = uriInfo.getRequestUri();
(...)
}
希望对你有帮助, 蒂埃里