Jersey: @Consumes funktioniert nicht ganz, wenn der Inhaltstyp nicht festgelegt ist
Ich versuche herauszufinden, wie @Consumes hier funktioniert.
Ich habe eine vereinfachte Ressource, die wie folgt aussieht, und ich möchte nur, dass diese Ressource "application / vnd.myApp + xml" verwendet.
@Path("/app")
@Consumes("application/vnd.myApp+xml")
@Produces("application/vnd.myApp+xml")
public class AppResource {
@POST
public Response postStuff() {
...
}
}
Ich habe folgende Testfälle: -
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);
...
}
}
Von den drei oben genannten Tests funktionieren die Tests 2 und 3 wie erwartet.
Was # 1 betrifft, warum wirft es keine 415, wenn ich den Inhaltstyp nicht festlege?