Как получить 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 2

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();
    }