ラボ > Laravel、Lumen:ajax、api絡み

laravel リクエストの取得

formなどのリクエストの取得とか

作成日:2019-03-31, 更新日:2019-04-03

基本

・コントローラーで引数で受取る(requestインスタンス)
・ファサードを使う
・ヘルパー関数を使う

調べると「requestインスタンス」と「ファサード」のどちらかを使う人が多い。
個人的に「(その変数は)どっから出てきた?」っていうのが好きじゃない。
出所を調べればいいんだろうけど、それが面倒。
→個人的にファサードをメインにして使う(予定)。

requestインスタンス

▼コントローラーで引数にrequestインスタンスを使う

public function 〇〇(Request $request) {
  $hoge = $request->get(〇〇〇);
}

ファサード

・「\Request::〇〇〇()」を使う

ヘルパー関数

・「$all = request();」を使う

(ファサードで)値の取得

・「\Request::input()」を使う
※ルーティングでmethod指定しているので取得時は気にする必要なし

// <input name="hoge">の値の取得
$a = \Request::input('hoge');
// 値が無ければ「$a」は「null」

// <input name="hoge">の値の取得
$b = \Request::input('hoge', 〇〇〇)
// 値が無ければ「$b」は第2引数がセット

(ファサードで)対象があるかチェック

・「\Request::has()」を使う(※「\Request::exists('hoge')」でもいける感じ)

// <input name="hoge">があるかチェック
if ( \Request::has('hoge') ) {
  // 要素アリ(値は見ていない)
}

他(ファサード)

・\Request::server()、\Request::server(キー, 初期値) - サーバー変数($_SERVER)
・\Request::header()、\Request::header(キー, 初期値) - ヘッダー
・\Request::hasHeader(キー) - ヘッダーにキーが含まるかチェック
・\Request::bearerToken() →「\Request::header('Authorization')」が「Bearer 」から始まるなら以降の値
・\Request::all() →ファイルも含めて全部取得
・\Request::keys() →ファイルも含めて全部のキーを取得
・\Request::except(キーの配列) →対象外を取得
・\Request::hasAny(キーの配列) →どれか一つでも含まれていたらtrue
・\Request::filled(キーもしくはキーの配列) →値が一つでも空白ならfalse
・\Request::anyFilled(キーもしくはキーの配列) →値が一つでも空白じゃなければtrue
・\Request::isEmptyString(キー) →値が無い、false、空白ならtrue
・\Request::query()、\Request::query(キー, 初期値) →クエリ文字列項目を取得
・\Request::post()、\Request::post(キー, 初期値) →payloadを取得(payload=余計な情報を省いたデータ?)
※まだまだ色々とあった→「vendor\laravel\framework\src\Illuminate\InteractsWithInput.php」を確認

Bearer トークン:\Request::bearerToken()

「Bearer トークン」って何だろうと思って調べたらRFC6750で定められたヘッダの仕様だそうだ。
→使える値は token68 文字(ASCII アルファベット、 ASCII 数字、 「-」「.」「_」「~」「+」「/」(末尾に0個以上の = があってもよい) )

トークンを利用した認証・認可 API を実装するとき Authorization: Bearer ヘッダを使っていいのか調べた