ここで @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 もスローされないのはなぜですか?