2016-05-18 6 views
0

私はルーメンAPIで作業PUTルートを作成するのに苦労しています。私の要求は正しい経路に届いていますが、私は$request->all()を通してどの値にもアクセスすることができません。ルーメンでPUTデータを取得する

PUTの本体を取得するために、PHPがphp://inputストリームを読み込む必要があることが分かりました。これは、getContent()関数Symfony\Component\HttpFoundation\Requestで行われます。ただし、この関数は複数回呼び出され、読み込み時に入力バッファが空になるため、必要なときにデータが存在しません。

Content-Typeヘッダをtext/plainに設定すると、$request->json()を正常に印刷できますが、application/jsonに設定するとオブジェクトは空になります。

アイデア?

PS:HTMLリクエストでは、_methodパラメータを追加する必要がありますが、HTMLでリクエストしていないので、パラメータは必要ありません。

編集:

マイルート:

$app->put('settings', '[email protected]'); 

マイコントローラ:あなたの要求の

class SettingController extends Controller 
{ 
    public function update(Request $request) 
    { 
     print_r($request->all()); 
    } 
} 
+0

コードを表示できますか? –

+0

どちらの部分?私のroutes.php: '$ api-> put( 'settings'、 'SettingController @ update');'。更新メソッドでは単に 'print_r($ request-> all())'を実行します。これは空です。私は途中でディンゴパッケージを使用しています。 – Martijn

+0

ルートとコントローラを使用している場合は、表示してください。 –

答えて

0

:私はあなたのコントローラからのコードを使用して、この応答を得た

{"asd": "asdf"} 

。これで

Illuminate\Http\Request::capture(); 

$app->run($request) 

:公共/ index.phpの中で、私は交換していた

$app->run(); 

注: あなたが要求$ APP-後のオブジェクト>の実行を(使用する場合)(例えば、いくつかのロギングやベンチマークを行うために)$ app-> requestを使うべきです。

logging_function($app->request); 
+0

これはトリックでした!なぜ私は 'Illuminate \ Http \ Request :: capture();'を最初に持っていたのか分かりませんが、とにかく – Martijn

0

のContent-Typeはそれに応じて設定する必要があります。 私の場合、私はjsonデータを送信していたので、それをapplication/jsonに設定しました。

だから私は、私のリクエストボディでこれを送信したとき:私はルーメンと、この正確に同じ問題を持っていた

Array 
(
    [asd] => asdf 
) 
+0

それは奇妙なことです:Content-Typeをapplication/jsonに設定すると、応答は空です。それをtext/plainに設定して '$ request-> json()'を出力すると、正しいデータが出力されます。それはdingo APIパッケージと関係がありますか? – Martijn

+0

私たちはディンゴが問題ではないことを理解しました。オフにすると依頼オブジェクトはまだ2回開始されます – Martijn

関連する問題