Я пытаюсь понять, как работает @Consumes здесь.
У меня есть упрощенный ресурс, который выглядит как ниже, и я хочу, чтобы этот ресурс потреблял "application/vnd.myApp + xml".
@Path("/app")
@Consumes("application/vnd.myApp+xml")
@Produces("application/vnd.myApp+xml")
public class AppResource {
@POST
public Response postStuff() {
...
}
}
У меня есть следующие тестовые коды: -
public class AppResourceTest extends JerseyTest {
@Test
public void testApp() {
// #1: Works fine
ClientResponse response = resource().path("app")
.accept("application/vnd.myApp+xml")
.post(ClientResponse.class);
...
// #2: Throws a 415 Unsupported Media Type
ClientResponse response = resource().path("app")
.accept("application/vnd.myApp+xml")
.type("text/plain")
.post(ClientResponse.class);
...
// #3: Works fine
ClientResponse response = resource().path("app")
.accept("application/vnd.myApp+xml")
.type("application/vnd.myApp+xml")
.post(ClientResponse.class);
...
}
}
Из 3-х тестов выше, # 2 и # 3 работают, как ожидалось.
Что касается №1, если я не устанавливаю тип содержимого, почему он тоже не бросает 415?