iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

Junior 後端工程師歷程系列 第 5

Day 05: Laravel 打造一組 API 系列 (1) - API 簡介與環境建置

今天來寫一下 API 小知識以及開始實作 API 的前置作業。

API 是什麼?

API (Application Programming Interface,應用程式介面),以web而言,簡單來說就是後端與前端溝通的橋樑,而這裡指的前端,不單只是 Web,也包含了 Mobile APP 和其他服務。而 API 扮演了特定功能的窗口,使前端能藉此訪問後端,執行特定功能。

常見的 HTTP 動詞

動詞 描述
GET 獲取資源,單個或多個
POST 創建資源
PUT 更新資源
DELETE 刪除資源

常見的 HTTP 狀態碼

  • 200 OK - 對成功的 GET、POST、PUT 或 DELETE 操作進行響應
  • 401 Unauthorized - 沒有進行認證或者認證非法
  • 403 Forbidden - 服務器已經理解請求,但是拒絕執行它
  • 404 Not Found - 請求一個不存在的資源
  • 405 Method Not Allowed - 所請求的HTTP 方法不允許當前認證用戶訪問
  • 422 Unprocessable Entity - 用來表示校驗錯誤
  • 429 Too Many Requests - 由於請求頻次達到上限而被拒絕訪問

---------- 下面就開始小專案囉 : ) ----------

實作前置作業

這邊就以一個簡單的書店書籍 API 來當小範例~~~

1.建立資料表 ( DataBase Table ) 跟資料模型 ( Model )

$ php artisan make:model Models/Book -mf

參數 m 為 migration, 參數 f 為 factory。

生成檔案後結果大概是這樣:

Tips: 建立 Model 時我習慣多放一層資料夾,比較好管理。

接著打開 Migration file,定義資料表

Run

$ php artisan migrate

OK~ 資料表建立完成。

2. 快速建置範例測試資料

還記得剛剛建立的 Factory 嗎,這邊來用一個小技巧快速生成我們 API 要用的資料吧 /images/emoticon/emoticon08.gif

Step1. 撰寫 Factory

BookFactory.php
回傳的陣列填入對應資料表的假資料

<?php

use Faker\Generator as Faker;

$factory->define(App\Models\Book::class, function (Faker $faker) {
    return [ 
        'name' => $faker->text(25),
        'author' => $faker->name,
        'price' => $faker->numberBetween(300, 2500),
        'publication_date' => $faker->dateTimeBetween('-10 year', '+9 month'),
    ];
});

Step2. 產生 Database Seeder

Laravel 可以用 seed 類輕鬆地為數據庫填充測試數據。Let's go.

Run

$ php artisan make:seeder BookTableSeeder

BookTableSeeder.php
呼叫 factory 方法

<?php

use Illuminate\Database\Seeder;

class BookTableSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        factory(App\Models\Book::class, 10)->create();
    }
}

然後在 seeds 資料夾下的 DatabaseSeeder.php 內使用 call 方法來運行 BookTableSeeder 類。

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        $this->call(BookTableSeeder::class);
    }
}

最後 Run

$ php artisan db:seed

結果如下:

燈燈,書店開張插三支香!!!十本書順利新增了,想要幾本都沒問題哦!明天我們就來利用這些資料建建 API 吧。

今天先到這~~謝謝大家!有問題可以問歐XD /images/emoticon/emoticon41.gif


上一篇
Day 04: Laravel 與 SPA
下一篇
Day 06: Laravel 打造一組 API 系列 (2) - 最 Eazy 的 API 與路由檔內的 Magic
系列文
Junior 後端工程師歷程10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言