Я бегу несколько JAX-RS ресурсов, объявленные как это:Как настроить пользовательский клиент Content-Type для jax-rs?
public interface MyEntityServiceV2 {
@PUT
@Consumes({"application/myentity-v2+json"})
@Produces({"application/myentity-v2+json"})
@Path("/{uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}}")
Response putMyEntity(@PathParam("uuid") String uuid, MyEntityDto myEntity);
}
Теперь я хочу, чтобы проверить их с помощью Джерси-клиент (или любого другого клиента, если это поможет исправить мою проблему):
MyEntityDto dto = new MyEntityDto();
Entity<MyEntityDto> entity = Entity.entity(dto, MediaType.APPLICATION_JSON_TYPE);
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:7001/path/" + UUID.randomUUID().toString());
Invocation.Builder builder = target.request("application/myentity-v2+json");
builder.header("Content-Type", "application/myentity-v2+json");
Response response = builder.put(entity);
К сожалению, это не сработает. Запрос всегда содержит тип содержимого приложения/json. И это не соответствует интерфейсу на сервере.
В качестве альтернативы я могу создать объект с моим специальным MediaType, который также приводит к ошибке, поскольку он не может найти MessageBodyWriter для этого типа.
О, и я не могу изменить служебную декларацию.
Как вы думаете, а лучший способ проверить этот ресурс?
Спасибо Эндрю. Думайте, что это не слишком плохое решение. – romixch