2016-05-20 5 views
0

私はSilexを使用してRESTful APIを作成しています。テストするには、Chromeの「Simple REST Client」アドオンを使用しています。Silex RESTful APIでPOST本体データを取得

私はURLを設定するアドオンで:http://localhost/api-test/web/v1/clients 私は「メソッド」を設定します。name =どんな

私の:POST 私は私が「データ」を設定し、「ヘッダ」、空白 を残します私が持っている「clients.php」ページ:

アドオンで
require_once __DIR__.'/../../vendor/autoload.php'; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 

$app = new Silex\Application(); 

$app->post('/clients', function (Request $request) use ($app) { 
    return new Response('Created client with name: ' . $request->request->get('name'), 201); 
} 

、出力ショー:「ステータス:201」(正しい)、ヘッダの束、および「データ:名前で作成されたクライアント:」(それ「データ:作成された名前のクライアント:何でも」

私は間違って何をしていますか?私も試しました:$ request-> get( 'name')

ありがとう。

+0

リクエスト(Content-Type:application/x-www-form-urlencoded)でContent-Typeヘッダーを送信してください。 – xabbuh

+0

@xabbuh私はフォームを作成していない、私はAPIを作成しています。まだ必要ですか? –

+0

@xabbuhあなたのヘッダーを追加することは私が提供した "データ"で動作します、ありがとうございます。私のEmber.jsフロントエンドは実際にはJSONを送信するので、POSTしたデータは{"name": "whatever"}ですが、このデータとヘッダー "Content-Type:application/json "または" Content-Type:application/vnd.api + json "という名前を出力しません。 –

答えて

2

3つのステップを解決するために必要であった。

1) "シンプル休息クライアント" での "ヘッダ" を設定します。

Content-Type: application/json 

2)に、 "データ" を変更します。

{ "name": "whatever" } 

http://silex.sensiolabs.org/doc/cookbook/json_request_body.htmlで説明したように

3)はサイレックスでは、JSONへの入力を変換するためのコードを追加します

は、その後私は私のPHPコード内のデータにアクセスすることができました:

$request->request->get('name') 

あなたは答えの方に私を導いあなたの助けのために@xabbuhありがとうございます。

+1

を使用する必要があります。 return new JsonResponse(array( '1'、 'a')); – fucethebads

関連する問題