У меня есть маршрут REST для создания ресурса, который использует параметры пути.
Ответ, данный здесь: https://stackoverflow.com/a/26094619/2436002 показывает, как легко создать правильный заголовок местоположения для ответа, используя контекст UriInfo.
@Path("/resource/{type}")
public class Resource {
@POST
public Response createResource(@PathParam("type") String type, @Context UriInfo uriInfo)
{
UUID createdUUID = client.createResource(type);
UriBuilder builder = uriInfo.getAbsolutePathBuilder();
builder.path(createdUUID.toString());
return Response.created(builder.build()).build();
}
}
Однако сюда входят параметры пути в полученном URI, что не приведет к правильному ресурсу.
POST: http://localhost/api/resource/{type} с pathparam type = "system "
вернет http://localhost/api/resource/system/123 (123 является сгенерированным идентификатором), тогда как правильный URI будет http://localhost/api/resource/123
Итак, как я могу получить правильное расположение ресурса для возврата