接下來定義 post 的所有 API route 以及是否需要 middleware,post 引用的 middleware 也是與使用者認證有關,因此只須運用之前的 token.auth 即可。
API routes 以及引用 middleware
Route::get('posts', 'PostsController@index');
Route::get('posts/{id}', 'PostsController@show');
Route::post('posts', 'PostsController@store')->middleware('token.auth');
Route::put('posts/{id}', 'PostsController@update')->middleware('token.auth');
Route::delete('posts/{id}', 'PostsController@destroy')->middleware('token.auth');
除此之外,還會再建一支 API,該 API 為某個使用者的所有貼文。
Route::get('users/{user_id}/posts', 'PostsController@userPosts');
正好此支 API 會運用到關聯性的概念,因此拿來當例子是一個不錯的選擇。
權限說明
以下權限的定義並非所謂的正確答案,可以視情況調整
method | admin | regular user | Unauthenticated user |
---|
index| - | - |O
show| - | - |O
store|O|O|X
update|O|只有自己|X
delete|O|只有自己|X
userPosts|-|-|O
說明:
index、show、userPosts 為任何人都可以看得到
store 除了未登入的使用者之外都可以執行
update 和 delete 除了 admin 之外,只有該貼文屬於自己的時候請求才能夠被執行
下一篇來解說 resource controller。