前言
本文實作一個可以對其進行 CRUD 的期刊目錄 API。
環境
- Windows 10
- Homestead 7.4.1
建立專案
建立專案。
1 | lumen new journal |
設定環境參數
設置 Homestead.yaml
檔。
1 | sites: |
設置 hosts
檔。
1 | 192.168.10.10 journal.test |
設置 .env
檔。
1 | DB_CONNECTION=mysql |
啟動 Homestead。
1 | cd Homestead |
新增遷移
新增 journals
資料表。
1 | php artisan make:migration create_journals_table |
配置欄位。
1 | Schema::create('journals', function (Blueprint $table) { |
執行遷移。
1 | php artisan migrate |
新增填充
手動新增 database\seeds\JournalsTableSeeder.php
檔,並編輯為:
1 | $journals = factory(App\Journal::class, 20)->create(); |
在 DatabaseSeeder.php
呼叫。
1 | public function run() |
手動新增 database\factories\JournalFactory.php
檔,並編輯為:
1 | $factory->define(App\Journal::class, function (Faker $faker) { |
執行填充。
1 | php artisan db:seed |
新增模型
手動新增 app\Journal
模型,並配置可寫入欄位。
1 | protected $fillable = [ |
新增路由
由於沒有視圖,因此不用 create 和 edit 路由。
1 | $router->group(['prefix' => 'api/journals'], function($router) { |
新增控制器
取得所有期刊。
1 | public function index(Request $request) |
儲存期刊。
1 | public function store(Request $request) |
取得指定期刊。
1 | public function show($id) |
更新指定期刊。
1 | public function update(Request $request, $id) |
刪除指定期刊。
1 | public function destroy($id) |
進行 HTTP 請求測試
使用 Postman 向網址 journal.test/api/journals 發起 GET
請求,得到回應如下:
1 | [ |
REST API 路由風格
動詞 | 路徑 | 動作 | 路由名稱 |
---|---|---|---|
GET | /photos | index | photos.index |
GET | /photos/create | create | photos.create |
POST | /photos | store | photos.store |
GET | /photos/{photo} | show | photos.show |
GET | /photos/{photo}/edit | edit | photos.edit |
PUT/PATCH | /photos/{photo} | update | photos.update |
DELETE | /photos/{photo} | destroy | photos.destroy |
補充
發起 PUT
、PATCH
或 DELETE
請求,需要在 body
表單加上:
Key | Value |
---|---|
_method | PUT / PATCH / DELETE |