1

データベースからの情報がJSON応答として返送されるアプリケーションがあります。

すべての応答を処理するようにjQuery側を調整することは、適応性をほとんど持たないために多大な労力を費やしているように思われます。

JSON形式をどのように標準化できますか?さらに、jQueryでハンドラーを「スロットイン」する方法はありますか?

私はこのようなものの線に沿って考えてきました:

{
"replyCode": "OK"/"Error",
"replyMessage": "Operation successful"/"Could not connect",
"returnData": ... // Entities go here
}
4

3 に答える 3

2

JSON応答の標準化は、アプリケーションごとにカスタマイズする必要があるものです。サポートするアクションと、それらがJSONを介してどのように伝達されるかを正確に決定するために必要なデータを持っているのはあなただけです。

例として、これまで私は「応答スニファー」ロジック(ハンドラーが応答内の特定のプロパティをチェックし、特定の方法で存在する各プロパティを処理する)と「コマンドリスト」ロジック(応答がこの状況では、実行する必要のある特定のアクションを記述し、ハンドラーがそれらを実行するオブジェクトの配列が常に含まれています。

HTTP応答ヘッダーはこの情報を効果的に伝達できるため、ほとんどの状況で応答コードとメッセージが必要になるとは思いません。

何をするにしても、.ajaxComplete(およびその兄弟.ajaxSuccess.ajaxError)を使用して、すべての要求の完了時に実行されるグローバル応答ハンドラーをクライアント側にインストールできます。

于 2012-10-04T23:43:33.437 に答える
2

まず、apigeeの皆さんからのビデオRESTfulAPIDesignを実際に見てください。これには、RESTfulAPIに関する多くの優れたアドバイスが含まれています。Brian Mulloyは、応答がどのように見えるべきかについてのフィードバックも提供します。

次に、RESTfulAPIを開発するためのphpのいくつかのライブラリを確認する必要があります。これらのいくつかは、応答を返す方法の確実な方法を提供します。

これを使用すると、RESTfulAPIを適切に構築することができます。

于 2012-10-05T00:42:04.500 に答える
1

JSONの最終的なエコーを応答として実行する中央関数を用意してみませんか。

function returnJSON($code,$data=array()){
  echo json_encode(
    array(
      'replyCode'=>$code,
      'replyMessage'=>getReturnMessageByCode($code),
      'returnData'=>$data
    )
  );
}

これで、このデータを取得するために行うすべてのAJAX呼び出しの最後に、PHPコードは次のようになります-

$data = fetchData();
if ($data){
  returnJSON('OK',$data);
}else{
  returnJSON('FAIL');
}
exit();

あなたの応答を標準化することは素晴らしい考えであり、あなたの責任でもあります。フレームワークに他のオプションがない限り、コードを可能な限り堅牢にするのはあなた次第です。

于 2012-10-04T23:39:02.763 に答える