したがって、私はJerseyでRESTサービスをセットアップしています。Jersey/JAXB XML検証エラーのカスタムエラーメッセージ
私のPOJOは単純に私は私のRESTサービスへのPOSTリクエストを送信し、すべてが正常に動作し@XmlRootElement
として注釈されています。
1不正なXMLをサービスに送信します。コンテナのデフォルトの400 Bad Requestページを返します。 Glassfish 3を使用して私は正確に覚えていないが、私は自分のWebアプリケーションを自分の400の悪い要求にマップするように変更するか、その特定の主題に関する文書をどこで探すことができますか?
2私は有効なXMLを送信しますが、予想されるフィールドの1つに空の値を入れます。私のサービスは何かをしようとし、永続性の例外をスローします。私はコンテナのデフォルトの500 Internal Server Errorページを返し、スローされた例外をリストします。私は自分のカスタムエラーページにもマップすることができると思いますが、例外メッセージを表示するだけではありません。これはセキュリティの問題と考えられています。
私は基本的に自分のビジネスロジックに基づいて自分自身のフィールドを検証し、 "Field1 is invalid"のようなエラーメッセージをクライアントに返したいと思います。クライアントはエラーコードを解析し、どのフィールドが間違っていたかを知ることができるはずです。
サービスに複数のタイプの不正なリクエストエラーがある場合はどうすればよいですか?たとえば、フィールドはINT値が1-3の間であると予想できますが、特定のビジネス要求では2の値が必要で、3が送信されます。
タイプ/値の検証では、単に「無効なフィールド名はここです」とします。しかし、特定のビジネスロジックでは、「無効なアカウント」や「アカウントが失効しました」や「住所が一致しません」などと表示されます。
また、
基本的に私は古い "xml"タイプのサービスを受けて、概念証明のためにRESTスタイルに変換し、それを標準にしています。つまり、結果的にXMLをPOSTし、XMLを読み込み、ビジネスロジックを呼び出し、ロジックが適切なコードをXMLレスポンスに返します。 HTTP 200 OK、ビジネスロジックコードがXMLレスポンスで返されるため、クライアントが500エラーを受け取る唯一の時間は、サービスがXMLレスポンスを生成できないハードエラーが発生した場合です。しかし、XMLレスポンスでは、私自身のエラーコードでこれを示しています。
私はSOAPをより多くの "メッセージ"指向のサービスに使用することを提案しましたが、まだ重いと思っています。サービスはありますが、ほとんどのRESTは必要ありませんが、
ありがとう、私はそれを試してみましょう。しかし、もう少し質問があります。私は主な質問を更新しました。 – user432024