環境 : 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 を返すことができます。しかし、そうではありませんでした。この場合に残りのフレームワークが提供するものはありますか?