3

私が使用しているmojoliciousアプリケーションはJSONベースです。つまり、クライアントとサーバー間の相互作用は、JSON構造化データの交換に近いものです。

REST呼び出しの1つでエラーが発生したときに、適切なHTTP応答コードを使用してエラーを処理する標準的な方法を実装しようとしています。そのような標準を実装する最良の方法は何ですか?どこでそれを行いますか?

私はそれを行ういくつかの方法を見ます

  1. クラスを作成し、すべてのエラー応答とそれに関連するコンテンツを一覧表示します。応答コードを使用してこのクラスを呼び出すことができます。これにより、関連するすべてのエントリを含むJSON構造(ハッシュと配列の組み合わせ)が返され、render_jsonが使用されます。 ()コントローラーのメソッドであり、これをクライアントへの応答として返します

  2. 応答に必要なすべてのフィールドのエントリを含むテーブルをデータベースに作成し、ファイルを使用してJSON構造にアクセスし、適切な応答を作成し、コントローラーでrender_json()を使用して、これをクライアントへの応答として返すことができます。

エラー応答の例は次のようになります

{
    "Message": "The requested resource is not found"
    "Type" : "http://this.is.an.error.com/error/resource_not_found",
    "ErrorCode" : 404,
    "Created" : "2012-11-05T11:59:29-05:00",
    "Request" : "GET /types/Foo/instances" 
}

そのような応答を標準化する正しい方法は何ですか?

4

3 に答える 3

5

チタノフォールドが述べたように、私はオプション2に行きます。

エラーコードに関しては、標準のHTTP応答ステータスコードを使用するようにしてください。JSONでプロパティを設定する以外にErrorCode、次の理由から、応答ヘッダーでステータスコードを送信する必要があります。

  • エラーを1か所で処理できerrorます-javascript関数のコールバック
  • 将来的には、バックエンドの他のコンシューマー(モバイルアプリなど)が存在する可能性があります
  • これが彼らが発明された理由です

Mojoliciousを使用すると、これを非常に簡単に実現できます。

$self->render_json( { 
    Message   => "The requested resource is not found", 
    Type      => "http://this.is.an.error.com/error/resource_not_found", 
    ErrorCode => 404, 
    Created   => "2012-11-05T11:59:29-05:00", 
    Request   => "GET /types/Foo/instances",
   }, 
  status => 404);
于 2012-11-05T20:51:02.743 に答える
2

標準の素晴らしい点は、選択できるものが非常に多いことです。標準のいずれかが気に入らない場合は、独自に作成できます。

REST構造に関しては、それはあなた次第です。成功するとコードを返す必要があるため、「ErrorCode」ではなく一般的な「code」を使用します。

メソッドオプションについては、オプション2を使用します。

于 2012-11-05T20:18:37.407 に答える
1

オプション2も選択しますが、エラーの詳細をデータベースの一部にする必要があることを理解していません。むしろ、すべてのエラーの詳細を保持し、それを他のクラスに継承して、アクセスできるようにする基本クラスのオブジェクト指向の概念を使用することをお勧めします。

于 2012-12-13T21:00:17.477 に答える