[Laravel5.5でREST API + SPA] API基本構築その1

Laravelプロジェクト作成

composerはインストール済&パス設定済の前提。

$ cd プロジェクトを作成するディレクトリ
$ composer create-project --prefer-dist laravel/laravel  プロジェクト名

ビルトインサーバで動作確認

$ cd プロジェクトディレクトリ
$ php artisan serve

http://127.0.0.1:8000にアクセス。
以下の画面が表示されればOK。

とりあえずお手軽にsqliteでDB作成

最終的にはmysqlに移行しますがとりあえず。
sqliteファイルを作成。

$ touch database/database.sqlite

.envファイル9行目~を以下のように修正。

#DB_CONNECTION=mysql
DB_CONNECTION=sqlite
#DB_HOST=127.0.0.1
#DB_PORT=3306
#DB_DATABASE=homestead
#DB_USERNAME=homestead
#DB_PASSWORD=secret

このままだとドライバがないというエラーで怒られることになるので以下をインストールしておきます。
インストール後、再度php artisan serveしてサーバ再起動しておいてください。

composer require doctrine/dbal

マイグレーションでusersテーブル作成

デフォルトで/database/migrationsにusersのマイグレーションファイルがあるのでそのままmigrateする。

$ php artisan migrate

seederでダミーデータ作成

database/seeds/DatabaseSeeder.phpを以下のように修正

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Seed the application's database.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
        factory(App\User::class, 50)->create();
    }
}

seeder実行。

$ php artisan db:seed

こんな感じで50件のuserダミーデータが入ります。

usersをCRUDするコントローラ作成

$ php artisan make:controller UsersController --resource

–resourceオプションを付けるとREST的な雛形で生成してくれる。
app/Http/Controllers/UsersController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class UsersController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

とりあえずindexで全ユーザを返すようにします。

    public function index()
    {
        $items = User::all();
        return Response($items);
    }

ルーティング

routes/api.phpを以下のように。

<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

/*Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});*/
Route::group(['middleware' => 'api'], function () {
    Route::resource('users', 'UsersController');
});

API動作確認

http://127.0.0.1:8000/api/users

こんな感じでjsonが返ってきます。

これでひとまずAPIとして機能するところまで組みあがりました。

[Laravel5.5でREST API + SPA] API基本構築その1” に1件のコメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る