2011-01-28 6 views
0

私はAPIを構築していますが、実装する方法としては交差点にあります。 jsonを使う予定です。なぜなら、PHPやJavaScriptでオブジェクトや配列を簡単に表現できるからです。

私はかなりそれを実装するには2つの方法があります。

1)は、JSON

$input = $_REQUEST['i']; 
$i_obj = json_decode($input); 
api_handle($i_obj); 

2にメソッド呼び出しを含める)メソッド呼び出し(そしておそらく、セッションなどの他の変数を、プッシュ)を並列に実行し、$ _REQUEST経由でデータを取得するだけです。

$method = $_REQUEST['m']; 
$argv = json_decode($_REQUEST['argv']); 
api_handle($method,$argv); 

私は2番目のケースでは、単にオブジェクトを構築し、それを経由しjson_encoded送ることができるが、デバッグにjson_decodeのために少なくなりますが、ビューのユーザーフレンドリーな観点から、AJAX/JSコーダーことがわかります入力「i」。

最後に私の質問は、これを実装するこれらの良い方法のいずれかですか、それとももっと良い方法ですか?これは簡単な例であり、このAPIのプロジェクトのスコープの残りの部分を表すものではありません。

+1

あなたのAPIが入力がどこから来ているのか不明でない限り(それはすべきです)、 '$ _REQUEST'を使わないでください。 '$ _COOKIE'の値もそこに格納されます。 –

+0

$ _COOKIEを使用すると、同じドメインで複数のサイトを使用すると問題が発生する可能性があることを理解していますが、それは言いたいことです。ありがとうございます。それ以外に、データがどこから来ているのかわからないという不利な点はありますか?あるいは、さまざまなソースを表す特定のキー/ハッシュ/暗号化について考えていますか?物事の場合、これらの種類を偽るのは簡単すぎる。 – josefnpat

+0

(これらのことは、リファラーなどに頼ることを意味します) – josefnpat

答えて

1

$_REQUESTには他の無関係のデータも同じレベルが含まれているので、この特定のケースでは、すべてのメソッド呼び出しデータを1つのオブジェクトに結合し、$_REQUESTキーから取得することをお勧めします。
メソッド名とその引数は結び付けられており、単一のパケットとして転送する必要があります。クラスの静的メソッドを呼び出す機能を追加したいと思うこともあります。 $_REQUESTに1つ以上のキーを追加し、その処理をしてオブジェクトにもう1つのフィールドを追加するのはずっと難しくなります。なぜならオブジェクトはカプセル化されたものであり、コードの変更によって影響を受ける領域が狭くなるからです。
もちろん、別のスクリプトでこのキーがすでに$_REQUESTに取り込まれていれば、オブジェクトフィールドの名前を気にせずに名前を付けることができます。

関連する問題