2011-08-11 7 views
0

私はCodeIgniterとRestServer for CI(下記参照)を使用してAPIを開発しています。また、Firefox RestClientプラグインを使用してAPIをテストしています。RESTserver POSTリクエストフォーマット

私はテストポスト(どのようなフォーマット)を行うのかと思います。

{"desc": "value"}試しましたが、機能しませんでした。 APIは受信ポストフィールドを「見て」いません。

http://net.tutsplus.com/tutorials/php/working-with-restful-services-in-codeigniter-2/

+1

正直なところ、cURLを使用してリクエストをうまく処理していることを確認してください。確認すると、これはプログラミング上の質問よりも「このソフトウェアを使用する方法」の詳細です。 – jondavidjohn

+0

Appceleratorを使ってiOSアプリをビルドしてこのAPIを使用します。今はRubyでAPIを構築していますが、PHPをテストしています。 Ruby APIを使用する場合、私はJSONオブジェクトを検出できましたが、今は使用できません。 –

答えて

2

ポスト本体は、特定の形式を持っている必要はありませんが、最も便利には、Webブラウザは、具体的Content-Type: application/x-www-form-urlencoded、フォームデータを符号化するのと同じ方法で体を符号化することです。特に、HostおよびContent-Lengthヘッダーは、ではなく、ではありません。通常、本体の解釈方法をサーバーに伝えるにはContent-Typeヘッダーが必要です。整形式のPOSTリクエストは次のようになります。

POST /path/to/resource HTTP/1.0 
Host: example.com:80 
Content-Length: 21 
Content-Type: application/x-www-form-urlencoded 

key=value&key2=value2 

コンテンツタイプのヘッダーを認識し、そのように本体を解析するのはサーバーに依然としてあります。

データはすべてのヘッダーの後にあり、要求パスの一部ではないことに注意してください(1行目)。

+0

これは素晴らしいです!同じデータをJSON形式で送信するにはどうすればよいですか? –

+0

jsonは 'application/json'というコンテンツタイプを持っていますが(それ以外のものもありますが、そのものを使用します)、jsonエンコードされたデータを通常のように投稿本体に含めてください。つまり、 'application/x-www-form-urlencoded'以外のリクエストコンテンツタイプを使用することはめったにありません。なぜあなたはあなたが必要と思う? – SingleNegationElimination

+0

これは正しいフォーマットですか? {"desc": "これはdesc"}ですか? –

0

任意に、私がCIについて書いたProxy Libraryを使用することができます。そのことを、あなたは...あなたのAPIの代わりにカールを使用して、より簡単な構文で(あまりにも人気のREST APIのその作品)に

// An example call to your API end point using POST, will be simply 
$this->load->library('proxy'); 
$this->proxy->http('POST', 'http://somesite.com/api/users', array('username' => 'foo', 'password' => 'bar')); 

あなたはあまりにもHTTPヘッダ一切定義することができます(のようなAPIを可能なコールのいずれかをシミュレートすることができますキーなど)。

関連する問題