私は単純なAPIを書いており、このAPIの上に簡単なWebアプリケーションを構築しています。Laravel 4で手動でディスパッチしたリクエストのクエリ文字列パラメータにアクセスするにはどうすればよいですか?
私が直接、「私自身のAPIを消費」したいので、私が最初にGoogleで検索し、完全に私の最初の質問に答えるStackOverflowの上でこの答えを見つけました:Consuming my own Laravel API
は今、これは素晴らしい作品、私は自分にアクセスすることができますよAPIは次のようにすることで実現します:
$request = Request::create('/api/cars/'.$id, 'GET');
$instance = json_decode(Route::dispatch($request)->getContent());
これは素晴らしいです!今、私は実際にAPIでこれを処理する方法を
http://cars.com/api/cars/1?fields=id,color
:しかし、私のAPIにもこのような返されるべき特定の属性を指定するGETクエリ文字列にオプションのフィールドパラメータを追加することができます
$request = Request::create('/api/cars/' . $id . '?fields=id,color', 'GET');
$instance = json_decode(Route::dispatch($request)->getContent());
:
public function show(Car $car)
{
if(Input::has('fields'))
{
//Here I do some logic and basically return only fields requested
....
...
}
私は、前にクエリ文字列パラメータレスのアプローチでこのような何かをしたと私は似た何かができることを前提としています。この線に沿って何かであります
しかし、そうは思われません。長文で言えば、コードをステップ実行すると、Request
オブジェクトが正しく作成されているように見えます(のフィールドのパラメータを正確に引き出し、のid、色を割り当てます)、ルートはディスパッチされたようですが、私のAPIコントローラ自体の中でフィールドパラメータにアクセスする方法がわかりません。 Input::get('fields')
(私が "通常の"要求に使用しているもの)を使用すると何も返されません。静的なInput
が最初の要求を参照しているか、またはスコープしているからです。アプリ内で
私の質問は本当にどうすればいいのですか?私は何か間違っているのですか?理想的には、私のAPIコントローラで醜いものや特別なものをするのを避けたいのですが、内部でディスパッチされたリクエストに対してInput :: getを使用できるようにしたい、もう一度チェックする必要はありません。
一つのこと内部要求が別の内部要求を呼び出す可能性があります。スタックの要求を保持し、元の入力を保存し、スタックから最後の要求をポップし、それに応じて入力を置き換える必要があるかもしれません。 –
作成されたリクエストにヘッダーを添付する方法はありますか?たとえば、リクエストとともに公開APIキーを送信する方法はありますか? – whonoes