iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 5
2
Modern Web

使用 Laravel 打造 RESTful API系列 第 5

新建動物資源檔案

使用Laravel 8 PHP主流框架打造RESTful API(iT邦幫忙鐵人賽系列書)ISBN:9789864345304

本系列文章已集結成冊與鐵人賽文章差異內容,有以下幾點:

更新至Laravel 8、基礎的PHP重點筆記、加強製作API流程細節、加入程式設計模式,優化、重構程式碼的部分,並且於書籍前面的章節介紹Git。

讓您從製作第一個簡單的API到優化自己的程式碼,分享我的經驗給您,打造自己的最強大腦API,若有興趣的朋友可以參考看看

天瓏網路書局:
https://www.tenlong.com.tw/products/9789864345304


先前我們提到的,需要一個

物件(Object) 來操作,這邊我們是 動物 這個物件資源

動作(Action)有 新增、刪除、修改、查詢

以及設定讓各個要介接的開發者有URI可以請求

產生Model

產生一個Model,我自己是把它理解成建立一個我們要操作的物件。

例如:操作文章的動作,那我就會新建一個 Post 的Model

如果我的需求是需要 User 使用者的 操作,那我就會建立一個 User 的Model

C:\project\animal\ > php artisan make:model Animal -rmc

顯示結果

後方 -rmc 的意思是在建立Model 同時建立 

  • Migration
  • Controller ( r 的意思是載入預設CRUD方法)

總共產生三個檔案

  • database/migrations/2019_08_22_201730_create_animals_table.php (Migration)
  • app/Http/Controllers/AnimalController.php (Controller)
  • app/Animal.php (Model)

指令有加入r變數,所以打開AnimalController.php可以看到已經有很多方法寫在裡面。

另外 2019_08_22_201730_create_animals_table.php 前面的日期時間是產生檔案時自動產生的紀錄。(你的可能跟我不相同,不過沒關係!)

接下來打開 api.php 設定路由。

Route::apiResource('animal', 'AnimalController');

apiResource 是 Laravel 內建的方法,可以把 URI 自動對應到 AnimalController 內相對應的方法。

可以下指令

C:\project\animal\ > php artisan route:list

查看路由如下圖所示

路由表

因為我們設定 URI 為 animal 所以會以這個字串對應到 AnimalController 的方法,因為可以不一樣,特別強調一下。

拿路由表的其中一個解釋一下

Method URI Name Action Middleward
GET /api/animal/{animal} anumal.show AnimalController@show api

這是一個查看單一動物資料的設定。動詞 GET 查詢 URI http://127.0.0.1:8000/api/animal/{animal} ,前面api前贅詞是因為把方法寫在 api 這一路的路由,{animal} 表示動物的ID,查詢ID1動物的資料 URI長得像這樣 http://127.0.0.1:8000/api/animal/1 ,並且對應到AnimalController 裡面的 show 方法。

好了我們到這裡已經順利的把一個資源基本的東西建立起來,但還有資料庫的部分以及新增、刪除、修改、查詢的實際功能

資料庫規劃

需求是可以讓想認養的人可以看到浪浪資訊,所以我打算儲存下面的內容。

欄位名 說明 格式 備註
id ID bigInteger(10) unsigned
type_id 動物分類 int(10) unsigned
name 動物的暱稱 varchar(255)
birthday 生日 date NULL
area 所在地區 varchar(255) NULL
fix 結紮情形 tinyint(1) 預設 false
description 簡單敘述 text NULL
personality 動物個性 text NULL
created_at 新建時間 timestamp NULL
updated_at 更新時間 timestamp NULL

上一篇
規劃系統核心目的
下一篇
實作資料庫以及新建動物的方法
系列文
使用 Laravel 打造 RESTful API30

尚未有邦友留言

立即登入留言