サインは、あなたがあなた自身のPOJO horacemanで述べたように、奇数動作や検証エラーを表します(別名。リソース)を作成する必要があります。私たちのアプリケーションでどのように行うのかをお見せしましょう。
データ表現としてJSONを使用しているので、予期しない例外が発生した場合は、次の情報を受け取ります。
{ "status" : "EXCEPTION", "exceptionName" : "MyCustomException", "exceptionMsg" : "ex.unsupportedOperation" }
これはもちろん例です。これについての良い解決策は、適切なi18n
メッセージを表示するか、そのままの状態でユーザーに表示するためにフロントエンドのキーとしてexceptionMsg
を扱うことができるということです(この場合、わかりやすいメッセージを使用します)。すべてがOKであるとき
は今、私たちはこのような何かを:
{ "status" : "OK", "data" : {(...)} }
Data
要素はオプションです。フロントエンドに通知するために必要なものをすべて送信することも、完全にスキップすることもできます。
最後のシナリオはあなたの検証エラーです。このケースでは、通常、次の内容を送信します。
{ "status" : "VALIDATION_FAILED", "errors" : [ "fieldName" : "username", "errorCode" : "validation.requiredField", "errorMsg" : "Username is required."] }
だから、はっきりAPIクライアントは、検証が失敗し、適切な分野でいることを情報受信します - 何が悪かったのかについての正確な詳細を。もちろんerrors
は配列(またはList
)ですので、必要なだけ多くの詳細を提供します。
どうすればいいですか? 簡単に、これらのオブジェクトは、ジャクソンを使用してJSONに変換される単純なPOJOSです。これはJSON表現の可能性を無制限に与えます。私がやっているのは、検証エラーを表すPOJOを準備していて、それをModel
としてModelAndView
インスタンスに追加しています。 JSONマーシャリングを適切に行うためにSpringに依存しています。あなたのケースでは
は、あなたのPost
インスタンスと@ResponseBody
注釈を持っているので、私の知る限りでは、あなたはそれを行うことはできません。あなたの設定は、「まあ、何が起こっても、常にポストのインスタンスを返します」と言っています。あなたがするべきことは、それを単純な0と置き換えることです。それには、検証に基づいて適切なModel
を与え、それをクライアントAPIに返します。
APIまたはハンドリングフォームを設計していますか? –
私はREST APIを設計しています。 –