今天來介紹後端常用的api風格,restful api。使用restful api風格,可以讓使用者清楚的知道這支api是在做什麼,也好有個統一的共識。在laravel中也通常使用這種風格,之前講controller那篇文章,使用的php artisan make:controller TodoController --api
建立出來的檔案,內容也是依照restful api建立的喔。
在介紹restful api之前,先講講什麼是api?api是前後端溝通的管道。為了使前端與後端串接,後端會開出URI以及request的method、header、body,其中還有一些細向規定,定好後寫在文件上就是api文件,前端便是靠api文件接上後端的資料的。
RESTful api(Representational State Transfer)表現層狀態轉換,是一種常見的api風格。使用GET、POST、PUT、DELETE 四種method分別對應到資料的操作CRUD,使用http method當作動詞,讓api看起來簡單直觀。
例如,這支api使用GET method,我就大概可以知道它可以get到某個資源。
以下是method跟CRUD的對應,我以todolist中的task的api為例:
method | URL | 動作 |
---|---|---|
GET | 127.0.0.1:8000/api/task | 取得所有task |
GET | 127.0.0.1:8000/api/task/1 | 取得1號task |
POST | 127.0.0.1:8000/api/task | 新增task |
PUT | 127.0.0.1:8000/api/task/1 | 更新1號task |
DELETE | 127.0.0.1:8000/api/task/1 | 刪除1號task |
你可以發現由method+URL可以發現,使用者可以想像使用這個api會做什麼動作
laravel可以使用apiResource這個方法設計route,配合製作controller時的--api
,laravel會直接幫你設定好RESTful api風格的route。
例如:
Route::middleware('tokenAuth')->apiResource('task', 'api\TaskController');
這樣我就直接設定好task的CRUD的route了,你可以用下面這個指令看到route設定
php artisan route:list
結果:
你會看到laravel幫你設定好了5個route,剛好對應到TaskController檔案中的5個function。
當然你也可以一條一條設定route,但是設計api時還請使用RESTful api風格,RESTful api只是一種風格,並不是標準規範,但它被廣泛的使用著,若不知道怎麼設計route的朋友們,不妨試試,或許可以更簡單明瞭的表達你的api。