瀏覽分類:

使用 Laravel 打造 RESTful API

查詢動物

原本我覺得查詢功能是一個最簡單製作的API,把所有的資料都讀出來給請求的使用者就好!但後來發現不是那麼容易~

查詢動物的動作有兩種

HTTP 動詞 URI 說明 Controller
GET/api/animal/1查詢動物 ID 1 的資料 show
GET/api/animal查詢系統目前的動物列表 index

查詢單一資源資料 

單一資源比較簡單就把 animal 物件,查詢出來給使用者就可以了!最多做一個Resource 來轉換一下要輸出的內容!(Resource這部分有點離題了!日後會有一篇寫 Resource 轉換回傳的JSON資料結構,先設計完成查詢API再說)

GET api/animal/2

AnimalController

public function show(Animal $animal)
{
    return response($animal, Response::HTTP_OK);
}

show 傳入的物件 Laravel 會自動利用 Model 設定的主鍵去找出資料(主鍵預設id),以上面的請求來說,他會去尋找ID:2的資料,找到物件就可以做需要的商業邏輯,上面show的方法是看單一動物的資料,所以我目前就直接把找到的資料傳出來,就是這麼簡單!

閱讀更多

刪除動物以及異常處理

今天也是先把簡單的處理完,今天來製作,刪除動物功能。

MethodURINameActionMiddleward
DELETEapi/animal/{animal}animal.destroyApp\Http\Controllers\AnimalController@destroyapi

用 HTTP DELETE 動詞請求 api/animal/1 表示刪除 id 為 1 的動物資料。

AnimalController

// 路由有設定 animal 變數,這裡設定它是 Animal 模型,所以會自動找出該ID的實體資料
public function destroy(Animal $animal)
{
    // 把這個實體物件刪除
    $animal->delete();
    // 回傳 null 並且給予 204 狀態碼
    return response(null, Response::HTTP_NO_CONTENT);
}
閱讀更多

實作資料庫以及新建動物的方法

實作資料庫

昨天有規劃一下資料表欄位,所以今天就來實作它吧!還記得在產生 Model 的時候有新增了一個 Migration ,這個東西可能一開始不太知道是什麼,它是一個可以把建立資料表這件事交由程式碼的檔案,迅速的創建好需要的資料表。如果是多人共同開發的時候,可以方便拿到最新版的資料庫。

/animal/database/migrations/2019_08_22_201730_create_animals_table.php

檔案已經包含 updown 兩個方法,表示跑這個檔案的時候,會執行 up 寫好的內容,如果恢復資料庫時會跑 down 的方法 

class CreateAnimalsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('animals', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedInteger('type_id')->comment('動物分類');
            $table->string('name')->comment('動物的暱稱');
            $table->date('birthday')->nullable()->comment('生日');
            $table->string('area')->nullable()->comment('所在地區');
            $table->boolean('fix')->default(false)->comment('結紮情形');
            $table->text('description')->nullable()->comment('簡單敘述');
            $table->text('personality')->nullable()->comment('動物個性');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('animals');
    }
}
閱讀更多

規劃系統核心目的

基本的 Laravel 專案前天已經安裝好了!今天來想想要做什麼系統!

系統構想

做任何事情總要有個開頭,想想日常有什麼需要改善的地方,最近常常去當動物保護的志工,因為愛心媽媽有收容很多流浪犬(簡稱浪浪),在送養會沒有辦法把所有的浪浪都帶到現場來。

所以很常被詢問什麼地方可以看愛心媽媽收容的浪浪,因為這個問題產生了!所以我們來解決這個問題吧!

製作能在網站上看愛心媽媽或有需要送養的人,刊登可愛貓、狗資料,讓想認養的人可以關注動物,並且讓第三方的平台,也可以串接API,提高送養率。

閱讀更多

RESTful API 介紹 – 入門

先強調一下! RESTful API 是一個設計模式,不一定每個需求都會符合這樣的設計,所以還是需要依照專案的需求去做一點調整才不會感覺為了用RESTful API而用RESTful API。

第一次開發網站的我

小時候的我(誤)兩年前,設計網站的時候,基本上用ajax拿資料時,我的後端URI命名方式都是很隨意的例如像這樣,以post(文章)資源當範例

  • GET /getPost
  • GET /postList?id=2
  • GET /getAllPost <-跟上面那個差在哪?
  • POST /addPost
  • POST /post/deleteAll
  • POST /post/delete?id=87

甚至會依照前端的畫面,打造專屬的命名 URI

  • GET /ajax/index/view  <-把所有 index 首頁需要的資料全部寫在這裡

看了眼花撩亂,說老實的我一個禮拜回去看我就已經有點看不出來是什麼功能了!簡單來說就是沒有一個原則。

例如上面的

  1. GET /postList?id=2
  2. GET /getAllPost

第一個網址可能有分頁的功能,第二個可能只有讀首頁需要的所有Post 文章資料而已,很難知道這個URI的功能。

如果工作的時程比較短,緊急又壓縮到我做其他事的時間,我乾脆直接做一個新的,所以變得越來越多方法!

想一想這樣不行,也剛好目前手上的案子,進入維護階段,讓我開始想盡任何的辦法優化系統,其中一樣就是打造一組RESTful API。

閱讀更多

安裝Laravel

基本的內容我想還是要有,雖然網路上已經有很多詳細的安裝Laravel文章了!但還是簡單帶過安裝流程,如果對於內容不夠清楚的地方歡迎跟我說

更新文章

撰寫文章的過程 Laravel6 發佈了!所以第二、三步驟可以用下方指令先安裝5.8版本

composer create-project --prefer-dist laravel/laravel blog "5.8.*"
閱讀更多

使用 Laravel 打造 RESTful API – 前言

為什麼想要寫這系列

RESTful API 目前滿主流的設計模式,我個人認為顧好資料核心結構,網頁的前端或是其他介面都可以使用,對於開發上的速度有很大的幫助。(例如:App、Web…都會用到資料)

平常小弟工作是使用 Laravel 開發,所以誕生這系列鐵人賽的內容!工作經驗開發過幾次API,這次鐵人賽會把以前的經驗加上最近吸收到的新知結合在一起,完成這30天挑戰。

會用這30天實際打造一個完整的 RESTful API 系統,因此前端的畫面並不會在這個系列中介紹,以API的架構、資料表的建置、認證、權限分組、優化程式碼… 為主。

閱讀更多