【Laravel】簡単なAPI備忘録
目次
はじめに
APIに対するイメージがイマイチだったのですが、イメージできた瞬間があったので備忘録。
そもそもAPIとは?
ソフトウェアにAPIという外部とやりとりする窓口を作り、外部アプリとコミュニケーションや連携ができる状態にする。
個々でわかる人にはわかると思うのですが、う〜ん、むずい。
ということで言葉で理解することを放棄。
LaravelでAPIを使用してみる
- DBの作成(できてる前提)
- マイグレーション作成
- モデルの作成
- コントローラーの作成と記述
- ルーティング
- 注意点
マイグレーション作成
create_samples_table
public function up() { Schema::create('***', function (Blueprint $table) { $table->bigIncrements('id'); $table->string('msg'); //追記 $table->timestamps(); }); }
モデルの作成
use Illuminate\Database\Eloquent\Model; class ChatMessage extends Model { protected $table = '***'; protected $fillable = ['msg']; }
$table
はモデルと連動させるテーブル名を記述$fillable
と$guarded
-
$fillabe
はユーザーによる値の変更を許可する -
$guarded
はユーザーから値を変えて欲しくない値 - [注意] 上記2つは同時に指定することはできない
-
参考
コントローラーの作成と記述(今回はindexとstoreのみ)
--resource
をつけてあげることでCRUDのアクションを自動生成してくれる
php artisan make:controller SampleController --resource
上記のコマンド叩くと下記のSampleControllerが生成される。
アクション
- index : 一覧
- store : POST送信時に呼ばれます
- show : 詳細一覧
- edit : 編集機能
- update : アップデート
- destroy : sakujo
public function index() { //処理 } public function store(Request $request) { //処理 } public function show($id) public function edit($id) public function update(Request $request, $id) public function destroy($id)
記述
//全件表示(GETで呼ばれた時のアクション) public function index() { $chat = Chatmsg::all(); return $chat; } //POSTで呼ばれた時のアクション public function store(Request $request) { //postのrequestをモデルのインスタンスに適応して、保存 $chatmsg = new Chatmsg; $chatmsg->msg = $request->msg; return $chatmsg->save; }
ルーティング
コントローラー名:ChatReplyController
Route::resource('/talk/reply','ChatReplyController');
注意
ルーティングは/talk/reply
なっているが、xx/talk/reply
にアクセスしても何も表示されない。
api.phpに記述した場合、ルーティングには下記のように記述するが、/talk/reply
の前にapi
をつけないといけない。
Route::resource('/talk/reply','ChatReplyController');
xx/api/talk/reply
となる。