泽西岛:@Consumes在未设置内容类型时不起作用
我试图弄清楚@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?