環境 : Java、ジャクソンとジャージー、Tomcat。
クライアントから JSON 入力を取得するレスト サービスがあります。入力を確認したいのですが、JSONかどうか、次にJSONの場合、JSON入力のキーが期待どおりかどうかです。はいの場合、HTTP 400-Bad 要求を生成する必要があります。
例えば-
// REST サービス @役職 @Path("ログイン") @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response login(認証情報ログイン、 @Context HttpServletRequest httpRequest) { もし (ログイン == null) // sendBadRequest(HTTP 400) を返します; String userName = (String) login.getUsername(); 文字列 passWord = (文字列) login.getPassword(); if (ユーザー名 == null) // sendBadRequest(HTTP 400) を返します; そうでなければ (passWord == null) // sendBadRequest(HTTP 400) を返します; ..... } // Credentials.java @JsonIgnoreProperties(ignoreUnknown=true) 公開クラス資格情報 { プライベート文字列のユーザー名。 プライベート文字列パスワード; // ゲッターとセッター... }
例-次のような非json入力
{「キー」:「値」HTTP 400を生成する必要があります。同様に、次のような不適切な値を入力します
{"ユーザー名" : "abc", "パスワード" : "abc"}HTTP 400 を生成する必要があります。
私のコードは、言及されたケース 2 でうまく機能しますが、ケース 1 でも同様に機能することを期待していました。json 以外の入力がある場合、Credential オブジェクトを null に設定すると予想していたので、'if' で null オブジェクトを使用して HTTP 400 を返すことができます。しかし、そうではありませんでした。この場合に残りのフレームワークが提供するものはありますか?