3

JAX-RS では、JAXB 要素をチェックする必要がありますか?

コンテナはコンテンツの有効性をチェックできますか (すべきですか)?

ItemRESTメソッドを呼び出す前に、コンテナはアンマーシャリング中にBAD_REQUESTに自動的に応答できますか(すべきですか) ?

クライアントがマーシャリング不可能な (または空の) コンテンツを送信したときに、コンテナーは INTERNAL_SERVER_ERROR を応答できますか?

@XmlRootElement
class Item {
}

@PUT
@Path("/items/{item_id: \\d+}")
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response updateItem(@PathParam("item_id") final Long itemId,
                       final Item item) {

    assert itemId != null; // '\\d+'


    assert item != null; // is this make any sense?

    // is it ok to assert item is never null?
}

もう 1 つ質問がありbyte[]ます。

@Consumes({MediaType.APPLICATION_OCTET_STREAM})
@PUT
@Path("/players/{player_id: \\d+}/picture");
public Response updatePicture(..., final byte[] bytes) {

    assert bytes != null;

   // is it ok to assert bytes won't be null even for an empty request body?

}

おっと、私は答えを見つけたと思います。

http://jsr311.java.net/nonav/releases/1.1/spec/spec3.html#x3-460004.2.4

長さゼロのリクエスト エンティティを読み取る場合、JAXB 関連の実装を除くすべての実装提供の MessageBodyReader 実装は、長さゼロのデータを表す対応する Java オブジェクトを作成する必要があります。null を返してはなりません。実装が提供するJAXB MessageBodyReader 実装は、長さゼロのリクエスト エンティティ に対して、クライアント エラー応答 ( HTTP 400 ) でWebApplicationException をスローする必要があります。

4

0 に答える 0