search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

Laravel 任意のステータスコードとビューをレスポンスとして返す

目的

  • Laravelのアプリでビューファイルと一緒に任意のHTTPステータスコードを返す方法をまとめる
  • ブラウザからHTTPステータスコードを確認する方法をまとめる

実施環境

  • ハードウェア環境
項目 情報
OS macOS Catalina(10.15.5)
ハードウェア MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports)
プロセッサ 2GHzクアッドコアIntel Core i5
メモリ 32 GB 3733 MHz LPDDR4
グラフィックス Intel Iris Plus Graphics 1536 MB
  • ソフトウェア環境
項目 情報 備考
PHPバージョン 7.4.3 Homwbrewを用いて導入
Laravelバージョン 7.0.8 commposerを用いてこちらの方法で導入→Mac Laravelの環境構築を行う
MySQLバージョン 8.0.19 for osx10.13 on x86_64 Homwbrewを用いてこちらの方法で導入→Mac HomebrewでMySQLをインストールする

前提条件

  • 実施環境に準ずる環境が整っていること。
  • Laravelアプリが作成され、アプリの起動、ブラウザからの確認ができる状態になっていること。

前提情報

読後感

  • Laravelアプリでビューファイルと一緒に任意のステータスコードが返せる様になる。
  • クライアントのブラウザに返されたステータスコードをchromeで確認する方法がわかる。

概要

  1. ルーティング情報情報の記載
  2. コントローラの作成と記載
  3. ビューの作成と記載
  4. ステータスコードの確認
  5. 任意のステータスコードの記載
  6. ステータスコードの再確認

詳細

  1. ルーティング情報情報の記載

    1. アプリ名ディレクトリで下記コマンドを実行してルーティングファイルを開く。

      $ vi routes/web.php 
      
    2. 下記の内容を追記して保存し、閉じる。

      アプリ名ディレクトリ/routes/web.php
      Route::get('/status', 'StatusController@status')->name('status');
      
    3. ルーティングファイル全体の内容を下記に記載する。

      アプリ名ディレクトリ/routes/web.php
      <?php
      
      use Illuminate\Support\Facades\Route;
      
      /*
      |--------------------------------------------------------------------------
      | Web Routes
      |--------------------------------------------------------------------------
      |
      | Here is where you can register web routes for your application. These
      | routes are loaded by the RouteServiceProvider within a group which
      | contains the "web" middleware group. Now create something great!
      |
      */
      
      Route::get('/', function () {
          return view('welcome');
      });
      
      Auth::routes();
      
      Route::get('/home', 'HomeController@index')->name('home');
      
      Route::post('/status', 'StatusController@status')->name('status');
      
  2. コントローラの作成と記載

    1. アプリ名ディレクトリで下記コマンドを実行してコントローラファイルを作成する。

      $ php artisan make:controller StatusController
      
    2. アプリ名ディレクトリで下記コマンドを実行して作成したコントローラファイルを開く。

      $ vi app/Http/Controllers/StatusController.php
      
    3. アクションとして下記の内容をクラス内に記載する。

      アプリ名ディレクトリ/app/Http/Controllers/StatusController.php
      public function status()
      {
          $str = ['message' => 'ステータスコードを500に設定していいます。'];
          return response()->view('statuses.return', $str, 500);
      }
      
    4. コントローラファイル全体の内容を下記に記載する。

      アプリ名ディレクトリ/app/Http/Controllers/StatusController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class StatusController extends Controller
      {
          public function status()
          {
              $str = ['message' => 'ステータスコードを500に設定しています。'];
              return response()->view('statuses.return', $str, 500);
          }
      }
      
  3. ビューの作成と記載

    1. アプリ名ディレクトリで下記コマンドを実行してビューファイルを格納するディレクトリを作成する。

      $ mkdir resources/views/statuses
      
    2. アプリ名ディレクトリで下記コマンドを実行してビューファイルを作成して開く。

      $ vi resources/views/statuses/return.blade.php
      
    3. 下記の内容を記載する。

      アプリ名ディレクトリ/resources/views/statuses/return.blade.php
      <h1>{{$message}}</h1>
      
  4. ステータスコードの確認

    1. アプリ名ディレクトリで下記コマンドを実行してローカルサーバを起動する。

      $ php artisan serve
      
    2. ブラウザで下記にアクセスする。(Authを用いたユーザ認証機能を有しているアプリで本作業を実施している場合、ログインしてユーザ認証を行わないと下記リンクにアクセスできない可能性がある。)

    3. 下記の様なページが開くことを確認する。

      127_0_0_1_8000_status.png

    4. 上記の画面が表示されているchromeのウインドウ上で右クリックをして、「検証」をクリックする。

      スクリーンショット_2020-08-21_22_45_46.png

    5. 開いた検証ページの「Network」をクリックする。

      127_0_0_1_8000_status-3.png

    6. 「Recording network activity...」の部分にコマンドキーとRキーを押下しろと書いてあるので押下する。

      127_0_0_1_8000_status-4.png

    7. Nameが「status」のStatusがコントローラファイルで指定した500と表示されている。コントローラファイルのステータスコードを指定している部分を任意の物に変更しhttp://127.0.0.1:8000/statusを再読み込みすることでステータスコードが変化すると思われる。

      127_0_0_1_8000_status-6.png

    8. Nameが「status」の物が表示されない場合、下記矢印部分の「All」が選択されているか確認する。

      127_0_0_1_8000_status-8.png

    9. 下記の様にコントローラファイルを修正したら指定した通りステータスコード505がブラウザでも確認できた。

      アプリ名ディレクトリ/app/Http/Controllers/StatusController.php
      <?php
      
      namespace App\Http\Controllers;
      
      use Illuminate\Http\Request;
      
      class StatusController extends Controller
      {
          public function status()
          {
              $str = ['message' => 'ステータスコードを505に設定しています。'];
              return response()->view('statuses.return', $str, 505);
          }
      }
      

      127_0_0_1_8000_status-7.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1