LoginSignup
26
22

More than 5 years have passed since last update.

LaravelをAPIサーバとしてしか使わない(ので不要なしくみを排除したい)

Posted at

初版:2018.12.7

  • laravel-5.7, php-7.2

対応

  1. ルーティング調整
  2. 不要ファイル削除
  3. レスポンスをjsonに固定
  4. Auth系いらない場合

ルーティング調整

  • webルート削除

    • routes/web.phpを削除
    • app/Providers/RouteServiceProvider.phpからmapWebRoutes()の実装と呼び出しを削除
    • app/Http/Kernel.php$middlewareGroups['web']を削除
  • apiルートのprefix消す

    • app/Providers/RouteServiceProvider.phpmapApiRoutes()内、prefix('api')prefix(null)にする

不要ファイル削除

  • Controllers

    • app/Http/Controllers/Auth/* すべて削除
  • frontend系

    • package.json
    • webpack.mix.js
    • public/css/app.css
    • public/js/app.js
    • public/svg/*
    • resources/js/*
    • resources/sass/*
    • resources/views/*
      • viewsは空にして、resources/views/.gitkeepでも入れとく
  • Middleware

    • app/Http/Middleware/VerifyCsrfToken.php * Kernel.phpでのクラス名指定も削除
    • app/Http/Middleware/EncryptCookies.php * 同上削除
    • app/Http/Middleware/RedirectIfAuthenticated.php * 同上削除

レスポンスをjsonに固定

Requestクラスを上書き

<?php
/**
 * always json
 * - public/index.phpでRequestクラスを直接書き換え
 * - 以下は入れ替わってるのを確認
 *    - `request()`
 *    - `\Illuminate\Support\Facades\Request::getFacadeRoot()`
 *    - DI: `function hoge(Request $req) {}`
 * ほかになにか使われ方あったっけ..
 */
namespace App\Http;

class Request extends \Illuminate\Http\Request
{
    /**
     * override
     */
    public function expectsJson()
    {
        return true;
    }

    /**
     * override
     */
    public function wantsJson()
    {
        return true;
    }
}
/public/index.php
 $response = $kernel->handle(
-    $request = Illuminate\Http\Request::capture()
+    $request = \App\Http\Request::capture()
 );

Auth系いらない場合

  • 削除

    • app/Http/Middleware/Authenticate.php
    • app/Providers/AuthServiceProvider.php
    • config/auth.php
  • 修正

    • config/app.php でAuthServiceProviderを削除
        // App\Providers\AuthServiceProvider::class, // Removed
    
  • app/User.php をどうにかする

    • Auth系の依存をはずす
    • config/channels.phpも調整するか、使って無ければコメントアウト
26
22
0

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
  3. You can use dark theme
What you can do with signing up
26
22