2012-07-01 11 views
12

それは、決定するのは難しい
現在、私はJSON HTTP POST Vsをx-www-form-urlencodedで

curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($this->arguments)); 

または

とPHPのLIBカールとx-www-form-urlencodedでなどのデータを送信しています
curl_setopt($curl, CURLOPT_POSTFIELDS, $this->arguments); 

最初の質問:第2の1つはコンテンツの長さが長くなるようですが、最初の解決策はおそらく良いですか?

それはのようなフラットなメッセージのための実用的です:

{ 
    "name": "John", 
    "token": "2121232145", 
    "code": "7", 
    "data": "Hello" 
} 

しかし、私はまた、オブジェクトを表すデータフィールドを持つことができ、この場合には、私はそれをencondingが、(JSONをコードするURL)がひどくていることをやっていました冗長と醜いメッセージ、私はアプリケーション/ JSONコンテンツタイプとしてそれを送信しようとした反対側に

curl_setopt($curl, CURLOPT_POSTFIELDS, json_encode($this->arguments)); 

コンテンツ長が小さいメッセージが、Wの大きいですi番目の組み込みJSONは、それは明らかに良いでしょう

しかし、x-www-form-urlencodedでも、私はJSONを

に埋め込まれている場合2つの貴様を持ってエレガントではないでしょう除いて、送信する必要があるフォームデータに近いですサーブレットはコンテンツタイプに応じてメソッドを解析するので、別のオプションもありますか?

+1

短い:x-www-form-urlencoded。 LONG:実際にどのような種類のデータを送信するか(複雑なネストされたオブジェクトか、例のようなわずかなフィールド)に依存します。また、送信されたデータは何を処理するのかによって異なります。すぐに解析され処理されるか、保存され、そのままユーザーに送信されます(jsonでエンコードされた形式)。 – pinepain

+0

@pinepainデータはグラスフィッシュサーバーに送られ、解析されてカサンドラデータベースに挿入されます。これは '{'data':json_encode({'text': '2klines ..'、 'author' : '私'})、 'id': '14141'、 'keywords':json_encode({[{'タグ':['青'、 '赤']}、{'著者':['私']} })、..} ' –

+0

同じやり方でやりとりすることは簡単です。どこでもJSONを使用してみませんか?退屈なfile_get_contents( 'php:// input')でフォームデータを$ _POST/$ _ GET/$ _ REQUEST変数とJSONデータとして扱うPHPのためです。私は、世界がPHPの周りを回転するのは嫌いです。 Node.jsでは、フォームデータの代わりにJSONを使用するのは非常に簡単で自然です。 –

答えて

6

x-www-form-urlencodedとJSONは異なるものです。 x-www-form-urlencodedは、サーバーにフォームを送信するために使用された単純なデフォルトのコンテンツタイプですが、JSONは、ネットワーク接続を介して構造化データをシリアル化して送信するために使用される、テキストベースの人間が読める形式(標準)です。あなたはそれらを比較すべきではありません。

第2の1つのコンテンツの長さが長くなるようですが、最初の解決策は でしょうか?

「いいえ」と表示された解決法はありません。 pinepainの言ったように、それは本当にどのような種類のデータを送信し、どのように解析/処理するかによって異なります。 JSONは要求に応じて追加データを送信するのに最適です。

コンテンツの長さについて考える必要はありません。送信して処理したいデータとデータ構造について考えてみましょう。リクエストとデータサイズの間で構造化されたデータを送信して処理したいだけなら、JSONを使用するだけです。これのために作られています。

あなたのアプリはFacebook、Twitter、Googleのようなモンスターではないので、2つの方法のコンテンツの長さの違いは問題にはなりません。早期の最適化はすべての悪の根源です。

+7

私がここで読んでいるのは、「時期尚早な最適化はすべての悪の根源です。これは役に立たない。 OPは、明らかに2つのソリューションの違いについて質問しています。 さらに、これが時期尚早かどうかは誰が知っていますか? OPはプロジェクトの最後に最適化オプションを実現しやすいものを探していたかもしれません。 – Jozua

8

Hereあなたは同様のフォーマットについての議論を読むことができます。

符号化データの構造を 名前と値のペアのフラットリストであることが保証されている場合は、x-www-form-urlencodedでは十分と思われます。 構造が(任意に)複合(例えば、ネストリストまたは 連想配列)の場合、JSONを確実に使用してください。

私はKISSの熟達者です。 JSON/XML /あなたの状況では、時間、メモリ、CPUサイクルの余分なコストがかかります。 x-www-form-urlencodedデータは読みやすさとコンパクトさを兼ね備えていますので、あなたの選択に当てることができます。