2015-03-19 2 views
2

я делаю одну службы Rest с Restaeasy (Java), которые должны возвращать тот же URL, который был вызван, но с одной новой строкойКак получить URL вызываемого метода Resteasy

службы

Пример вызова:

сообщением => mybase/myservice/somerite с некоторыми JSON
| Réponse => MyBase/MyService/somewrite/123456

Так я хочу сделать MyBase/MYSERVICE/somewrite URL с одной общей логики, потому что если я поставил String returnURL="mybase/myservice/somewrite"; и я изменить, например, имя mybase réponse будет не хорошо

Я хочу Somthing как это

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

Но я не знаю, если это возможно, чтобы сделать это, и меньше, как это сделать

ответ

3

Можно также вводить экземпляр типа UriInfo с помощью аннотации Context в пределах вашего ресурса, как описано ниже:

@Context 
private UriInfo uriInfo; 

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

Надеется, что это помогает вам, Тьерри

0

Я ж ound ответ на мою проблему, я поставил впрыснуть с @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(); 
    } 
Смежные вопросы