Как получить url вызываемого метода resteasy
Я делаю один сервис Rest с Restaeasy (java), который должен возвращать тот же URL, который был вызван, но с одной новой строкой
Пример службы вызова:
Post => mybase / myservice/somewrite с некоторым JSON
| Reponse => mybase / myservice / somewrite/123456
Поэтому я хочу сделать mybase/myservice/somewrite url с одной общей логикой, потому что если я поставлю String returnURL="mybase/myservice/somewrite";
и изменю, например, имя mybase
, то ответ не будет хорошим
Я хочу что-то вроде этого
someLogicService(JSON);
id=getId();
URL=getContextCallURL();
return URL+/+id;
Но я не знаю, возможно ли это сделать, и еще меньше, как это сделать
2 ответа:
Вы также можете ввести экземпляр типа
UriInfo
, используя аннотациюContext
внутри вашего ресурса, как описано ниже:@Context private UriInfo uriInfo; @POST @Path("/") @Consumes(MediaType.APPLICATION_JSON) public Response makeContact(Contact contact) { String requestUri = uriInfo.getRequestUri(); (...) }
Надеюсь, это поможет вам, Тьерри
Я нашел ответ на свою проблему, я ввел inject with @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(); }