私はJerseyを使ってJAX-RS(別名JSR-311)を学んでいます。私はsuccessfulyルートリソースを作成したとのパラメータで遊んでいます:JAX-RS/Jerseyエラー処理をカスタマイズする方法は?
@Path("/hello")
public class HelloWorldResource {
@GET
@Produces("text/html")
public String get(
@QueryParam("name") String name,
@QueryParam("birthDate") Date birthDate) {
// Return a greeting with the name and age
}
}
これは素晴らしい作品、および日付によって理解されている現在のロケールで任意の形式を扱う(String)コンストラクタ(のようなYYYY/MM/ddおよびmm/dd/YYYY)。しかし、私が無効であるか分からない価値を提供するなら、私は404応答を得ます。例えば
:
GET /hello?name=Mark&birthDate=X
404 Not Found
どのように私は、この動作をカスタマイズすることができますか?たぶん異なる応答コード(たぶん "400 Bad Request")?エラーの記録はどうですか?トラブルシューティングに役立つカスタムヘッダーに問題の説明(「不良な日付形式」)を追加することはできますか?または、5xxのステータスコードとともに、詳細とエラー応答全体を返しますか?
、スーパー(への呼び出し)、わずかに異なっていなければなりません:。。 スーパー(のResponse.Status(Status.UNAUTHORIZED) エンティティ(メッセージ).TYPE( "text/plainの")の構築()); 洞察に感謝します。 –
彼の例ではメソッドが実行されないと思います。 – deamon
質問に記載されているシナリオでは、入力値からDateオブジェクトのインスタンスを作成できないため、Jerseyは例外を発生させるため、例外をスローする機会はありません。ジャージーの例外を傍受する方法はありますか?ただし、1つのExceptionMapperインターフェイスがありますが、メソッドによってスローされた例外(この場合は取得)もインターセプトします。 –