【Laravel】Illuminateにある主要メソッド Http編

### 言語
- Laravel8

## Illuminateとは
- Laravelが提供する様々なサービスやコンポーネントを構成するための基盤を提供している。
- サービスやコンポーネントは``Illuminate``名前空間内に整理されている

### どこにあるか？
**``プロジェクトディレクトリ\vendor\laravel\Framework\src\Illuminate\~``**

## Illuminate\Http
- リクエストとレスポンスの操作を提供する。

## Illuminate\Http\Request

- ``Request``クラスはHttpリクエストに関する情報を管理するためのメソッドを提供。

### ``all()``
- 全ての入力データを取得
    ```Laravel
     $allData = $request->all();
     ```

### ``input($key = null, $defalt = null)``
- 指定されたキーの入力データを取得
    ```Laravel
     $nameData = $request->input('name');
     ```

### ``has($key)``
- 指定されたキーの入力データが存在するか確認する
    ```Laravel
     if ($request->has('name')) {
     
     }
     ```

### ``only($keys)``
- 指定されたキーの入力データのみを取得
    ```Laravel
     $inputData = $request->only(['name', 'email']);
     ```

### ``except($keys)``
- 指定されたキー以外の全ての入力データを取得
    ```Laravel
     $inputData = $request->except(['password']);
     ```

### ``file($key = null, $default = null)``
- 指定されたキーのファイルを取得
    ```Laravel
     $file = $request->file('image');
     ```

### ``query($key = null, $default = null)``
- クエリストリングのパラメータを取得
    ```Laravel
     $page = $request->query('page');
     ```

:::note
**クエリストリングとは？**
URLの「?」以降にキーと値のペアとして追加の情報を提供するために使われるパラメータのこと。
```:URL
http://example.com/search?name=test&page=5
```
- 上記の場合、クエリストリング部分は``'name=test&page=5'``です。
- ``'name'``は``'test'``という値。
- ``'page'``は``'5'``という値。
:::

### ``method()``
- Httpリクエストのメソッドを取得
    ```Laravel
     $method = $request->method();
     ```

### ``isMethod($method)``
- リクエストメソッドが指定されたメソッドかどうかを確認
    ```Laravel
     if ($request->isMethod('post')) {
     
     }
     ```

### ``ajax()``
- リクエストがAJAXリクエストかどうかを確認
    ```Laravel
     if ($request->ajax()) {
     
     }
     ```

:::note
**ajaxとは？**
AJAX = Asynchronous JavaScript and XML
ウェブページがサーバーと非同期にデータをやり取りするための技術。
ページ全体を再読み込みすることなく、部分的にデータを更新することができる。
:::


## Illuminate\Http\Response

- ``Response``クラスはHttpレスポンスを管理するためのメソッドを提供。

### ``json($data = [], $status = 200, array $headers = [], $options = 0)``
- JSON形式のレスポンスを作成する
    ```Laravel
     return response()->json(['name' => 'qiita', 'state' => 'teacher']);
     ```

:::note
**jsonとは？**
JSON = JavaScript Object Notation
データの表現方法の一つで、軽量で読みやい。
JSON形式の基本的な構造は、オブジェクト{}・配列[]・値。
```:JSONの例
{
    "person": {
        "name": "Qiita",
        "email": "test@example.com",
        "address": {
            "street": "123 Main St",
            "city": "Tokyo"
        },
        "hobbies": ["reading", "gaming"],
        "isMale": true
    }
}
```
:::

### ``download($file, $name = null, array $headers = [], $disposition = 'attachment')``
- 指定されたファイルのダウンロードレスポンスを作成する
    ```Laravel
     return response()->download($pathToFile);
     ```

### ``make($content = '', $status = 200, array $headers = [])``
- 新しいレスポンスインスタンスを作成する
    ```Laravel
     return response()->make('Hello Qiita', 200);
     ```

### ``redirectTo($path, $status = 302, $headers = [], $secure = null)``
- 指定されたURLへのリダイレクトレスポンスを作成する。
    ```Laravel
     return redirect()->to('/index');
     ```

## 私のIlluminate関連記事

https://qiita.com/Jisu/items/47361c5c1a80ad71655c

https://qiita.com/Jisu/items/c92501a4595da0e6e2c3

https://qiita.com/Jisu/items/a3eb5dbb60e77431afa9

https://qiita.com/Jisu/items/133c47cd2aea42a1dec7

https://qiita.com/Jisu/items/da70992ec3196d0ed8cb