2025年6月28日 星期六

ModuCore 實戰:為 Laravel 開發者設計的模組化、高效能 API 後端入門 (含 RBAC, Docker, CI/CD)

 

ModuCore 實戰:為 Laravel 開發者設計的模組化、高效能 API 後端入門 (含 RBAC, Docker, CI/CD)

哈囉,各位對 Laravel 和後端開發充滿熱情的夥伴們!你是不是也曾經為了建置一個功能複雜、高效能、還要好維護的 API 後端而感到頭痛呢?或是當專案規模越來越大時,程式碼像義大利麵一樣糾結,讓你想哭卻哭不出來?

別擔心!今天,我要帶大家認識一個超實用的 Laravel 後端框架——ModuCore。它就像是一個已經幫你把地基打好、隔間分好、水電管線也拉得差不多的「預售屋」,讓你可以在上面快速蓋出自己的「夢想大樓」!

ModuCore 致力於解決中大型 API 平台開發中的痛點,像是程式碼難以管理、權限控制複雜、效能瓶頸,以及部署流程麻煩等等。透過模組化、內建 RBAC、整合高性能工具和 CI/CD,它能讓你更專注在業務邏輯本身,而不是被基礎架構搞得焦頭爛額。

您可以透過以下 GitHub 連結檢閱本專案的原始碼:https://github.com/BpsEason/smart-realestate-system.git

這篇文章將會用最輕鬆的方式,一步步帶你了解 ModuCore 的核心概念,從安裝到實際運作,讓你對它有更全面的認識!

🚀 什麼是 ModuCore?它為什麼能幫到你?

想像一下,你要蓋一棟超級市場,裡面有不同的部門:生鮮區、日用品區、收銀台等等。如果所有東西都混在一起,那管理起來肯定是一團糟。ModuCore 就是用「模組化」的概念來設計你的後端專案,把不同的「部門」分開來管理。

ModuCore 的主要特色和它能解決的問題:

  1. 模組化架構 (Modular Architecture):讓程式碼整潔有序!

    • 問題: 傳統 Laravel 專案,所有程式碼都放在 app/ 目錄下,隨著功能增加,檔案會越來越多,找起來費勁,維護起來也容易出錯。

    • 解決: ModuCore 把不同的業務功能(例如使用者管理、金流處理、簡訊通知)獨立成一個個的「模組」,每個模組都有自己的專屬資料夾,裡面放著自己的控制器、服務、模型、路由等等。這樣每個模組都像一個小積木,可以獨立開發、測試,未來要擴充或替換都超方便!

  2. RBAC 權限控管 (Role-Based Access Control):誰能做什麼,清清楚楚!

    • 問題: 不同的使用者在系統裡有不同的權限,例如管理員、編輯、一般會員,如果手動管理這些權限,簡直是場惡夢。

    • 解決: ModuCore 內建了 RBAC。它把權限分成「角色」和「權限」兩種,你可以設定「管理員」這個角色擁有所有權限,「編輯者」只能編輯文章等等。這樣你只需要把角色賦予給使用者,就能輕鬆管理權限,安全又省事!

  3. 高效能部署 (High Performance Deployment):讓你的 API 飛起來!

    • 問題: 隨著用戶量增加,API 服務可能會變慢,因為每次請求都得重新啟動整個應用程式,很耗資源。

    • 解決: ModuCore 整合了 Laravel Octane (Swoole)Redis

      • Octane 讓 Laravel 應用程式能「常駐記憶體」運行,就像把常用的工具一直放在手邊,不用每次都從工具箱裡拿出來,大大減少了每次請求的啟動時間,提升響應速度和吞吐量。

      • Redis 則是用來做快取和隊列,進一步分擔資料庫壓力,讓整個系統更快、更順暢。

  4. CI/CD 自動化 (CI/CD Automation):告別手動部署的惡夢!

    • 問題: 程式碼寫完,要手動測試、打包、部署,過程繁瑣又容易出錯,特別是團隊協作時。

    • 解決: 它預設包含了 GitHub Actions 的 CI/CD 設定。你只要把程式碼推送到指定分支,它就會自動幫你執行程式碼檢查、跑測試、打包 Docker 映像,然後部署到伺服器。這就像你有一個自動化的生產線,大大提升了開發效率和部署的可靠性。

  5. 完整 API 文件 (Comprehensive API Documentation):前後端溝通零障礙!

    • 問題: 前後端工程師在對接 API 時,如果沒有清晰的文件,常常會遇到接口不對、參數錯誤等問題,導致溝通成本很高。

    • 解決: ModuCore 整合了 Swagger/OpenAPI。它可以自動根據你的程式碼註解生成詳細的 API 文件,讓前後端開發者一目瞭然,大大提升協作效率。

總之,ModuCore 就是一個專為「懶人」和「追求效率」的開發者打造的框架,讓你告別那些重複又耗時的基礎設定,專注在實現核心業務價值!

🏡 專案架構:ModuCore 內部大揭秘

了解 ModuCore 的魅力後,我們來看看它的「內部結構」是怎麼設計的。它把 Laravel 專案的各個部分,以更清晰、模組化的方式組織起來,就像一棟設計精良的大樓,每個樓層和房間都有它的功能。

整合後的專案結構大概是這樣:

your-laravel-project/
├── app/
│   ├── Console/Commands/      # 自定義 Artisan 命令(例如 `make:module`)
│   ├── Core/Models/           # RBAC 核心模型(Role、Permission、UserRole)
│   ├── Http/Middleware/       # 中介層(API Key、權限檢查、速率限制)
│   ├── Models/                # Laravel 基礎模型(例如 `User.php`)
│   └── Modules/               # 模組化結構的核心!
│       ├── User/              # 使用者模組
│       │   ├── Controllers/   # 處理使用者相關請求
│       │   ├── Services/      # 使用者業務邏輯
│       │   ├── Contracts/     # 定義使用者服務介面
│       │   ├── Models/        # 模組專屬模型(如果需要擴展)
│       │   └── Providers/     # 模組服務提供者
│       ├── Payment/           # 金流模組(ECPay)
│       │   ├── Contracts/
│       │   ├── Controllers/
│       │   ├── Services/
│       │   └── Providers/
│       ├── Sms/               # 簡訊模組(Twilio)
│       │   ├── Contracts/
│       │   ├── Controllers/
│       │   ├── Services/
│       │   └── Providers/
│       └── Rbac/              # 角色權限管理模組
│           └── Controllers/   # 角色與權限的 API 處理
├── config/                    # 配置檔案(modules.php、octane.php 等)
├── database/                  # 資料庫遷移 (migrations) 和填充 (seeders)
├── routes/                    # 主要路由檔案(api.php, web.php)
├── .github/workflows/         # CI/CD 配置(deploy.yml)
├── docker/                    # Docker 配置 (nginx, supervisor, php-fpm)
├── docker-compose.yml         # Docker Compose 開發環境設定
├── docker-compose.prod.yml    # Docker Compose 生產環境設定
├── tests/                     # 測試檔案(單元測試、功能測試、壓力測試)
└── ... 其他 Laravel 核心檔案 ...

架構圖解:服務互動示意

這張圖能更直觀地展示 ModuCore 裡各個服務和組件是怎麼互相合作的:

graph TD
    A[Client (前端)] -->|HTTP 請求| B[Laravel API]
    B -->|路由分發 (Routing)| C[使用者模組 (User Module)]
    B -->|路由分發| D[金流模組 (Payment Module)]
    B -->|路由分發| E[簡訊模組 (Sms Module)]
    B -->|路由分發| F[RBAC 模組 (Rbac Module)]
    B -->|中介層 (Middleware)| G[API Key 驗證]
    B -->|中介層| H[權限檢查 (CheckPermission)]
    B -->|中介層| I[速率限制 (RateLimit)]
    B -->|快取/隊列| J[Redis (高性能存儲)]
    B -->|資料庫操作| K[MySQL (數據持久化)]
    D -->|金流 SDK| L[綠界 ECPay 服務]
    E -->|簡訊 SDK| M[Twilio 服務]
    B -->|常駐運行| N[Laravel Octane (Swoole 加速)]
    F -->|檢查權限| H

從這張圖可以看出:

  • Client (前端) 發送 HTTP 請求給 Laravel API

  • Laravel API 會先經過一系列的中介層 (Middleware) 檢查,例如 API Key 驗證、權限檢查、速率限制,確保請求合法且符合規範。

  • 請求接著會被路由到對應的模組,例如使用者相關的請求會到 User Module 處理。

  • 模組內部可能會調用 Redis 進行快取讀寫或處理隊列任務,也會與 MySQL 進行資料庫操作。

  • 金流和簡訊模組會進一步透過對應的 SDK 與外部服務(如 ECPayTwilio)溝通。

  • 最重要的是,整個 Laravel API 是運行在 Laravel Octane 之上,透過 Swoole 的能力實現高性能。

這樣的架構讓每個部分各司其職,協同運作,共同提供一個穩定、高效的 API 服務。

🛠️ 環境要求:開始搭建前需要準備什麼?

在我們開始動手搭建 ModuCore 專案之前,請確保你的開發環境已經準備就緒。這就像你要蓋房子,得先準備好鋼筋水泥、工具一樣!

你需要準備以下這些工具和軟體:

  • PHP 8.2 或以上版本: 這是 Laravel 的核心,請確保你的 PHP 版本符合要求。

  • Composer: PHP 的套件管理工具,用來安裝 Laravel 框架和各種依賴。

  • Docker (含 Docker Compose): 強烈推薦!它能幫助我們快速搭建開發環境,避免各種環境配置問題。

  • Git: 版本控制工具,用來拉取程式碼。

  • 網路連線: 廢話不多說,你懂的!

準備好了嗎?那就讓我們開始吧!

🏁 安裝步驟:手把手教你搭建 ModuCore 專案

ModuCore 是一個高度整合的 Laravel 後端框架。由於您的 GitHub 倉庫 https://github.com/BpsEason/ModuCore.git 中只包含核心代碼,因此我們需要透過以下手動步驟,從頭開始建立一個 Laravel 專案,然後將 ModuCore 的核心組件複製到新專案中。

步驟 1:初始化 Laravel 專案

首先,我們需要使用 Composer 建立一個全新的 Laravel 專案。

  1. 創建一個新的資料夾,作為你專案的根目錄,然後進入這個資料夾。這裡我們以 my-moducore-project 為例:

    mkdir my-moducore-project
    cd my-moducore-project
    
  2. 使用 Composer 建立 Laravel 專案:

    composer create-project laravel/laravel backend-laravel
    

    這會在你當前目錄下創建一個名為 backend-laravel 的資料夾,裡面包含了完整的 Laravel 應用程式骨架。

步驟 2:從 GitHub 倉庫複製 ModuCore 核心代碼並整合

現在,我們將從您的 ModuCore GitHub 倉庫複製核心組件,並將它們整合到剛才建立的 backend-laravel 專案中。

  1. 克隆您的 ModuCore 倉庫:my-moducore-project 目錄下(與 backend-laravel 同級),克隆您的倉庫。

    git clone https://github.com/BpsEason/ModuCore.git moducore-core-temp
    

    這會創建一個名為 moducore-core-temp 的臨時資料夾,裡面包含了 ModuCore 的核心檔案。

  2. 複製核心程式碼: 現在,將 moducore-core-temp 中的核心檔案和目錄複製到你的 backend-laravel 專案中。

    cp -r moducore-core-temp/app/* backend-laravel/app/
    cp -r moducore-core-temp/config/* backend-laravel/config/
    cp -r moducore-core-temp/database/* backend-laravel/database/
    cp -r moducore-core-temp/.github backend-laravel/ # 複製 CI/CD 配置
    cp -r moducore-core-temp/docker backend-laravel/ # 複製 Docker 配置
    cp moducore-core-temp/docker-compose.yml . # 複製到專案根目錄
    cp moducore-core-temp/docker-compose.prod.yml . # 複製到專案根目錄
    cp -r moducore-core-temp/tests backend-laravel/ # 複製測試檔案
    cp moducore-core-temp/.env.example backend-laravel/ # 複製 .env.example
    
    • 重要提示: 由於您的 moducore-core-temp 倉庫中可能沒有 docker-compose.yml 等文件,這裡假設它們是直接在您提供的倉庫根目錄下。如果它們位於 moducore-core-temp/backend-laravel/ 內部,則路徑需要調整為 moducore-core-temp/backend-laravel/docker-compose.yml 等。請根據您實際的倉庫結構進行調整。

    • 複製完成後,你可以刪除臨時的 moducore-core-temp 資料夾:rm -rf moducore-core-temp

步驟 3:更新 Composer 依賴

ModuCore 依賴於一些額外的 Composer 套件,例如 Laravel Octane、Sanctum、L5-Swagger 等。我們需要將這些依賴加入到 backend-laravel/composer.json 中,然後運行 composer update

  1. 進入 backend-laravel 目錄:

    cd backend-laravel
    
  2. 編輯 composer.json 打開 backend-laravel/composer.json 檔案,在 require 部分添加以下依賴:

    {
        "require": {
            "php": "^8.2",
            "guzzlehttp/guzzle": "^7.8",
            "laravel/framework": "^10.0",
            "laravel/sanctum": "^3.3",
            "laravel/tinker": "^2.8",
            "darkaonline/l5-swagger": "^8.0",
            "laravel/octane": "^1.2",
            "predis/predis": "^2.0",
            "twilio/sdk": "^7.0"
        }
    }
    
    • 注意: 確保 phplaravel/framework 的版本與您當前環境相符。

    • predis/predistwilio/sdk 是用於 Redis 和 Twilio 服務的,如果您的 ModuCore 實現有使用,則需要添加。

  3. 運行 Composer 更新:

    composer update
    

    這會安裝所有必要的 PHP 套件。

步驟 4:配置環境變數 (.env)

Laravel 應用程式的運行需要正確的環境變數。

  1. 複製 .env.example.env

    cp .env.example .env
    
  2. 編輯 .env 檔案:這一步非常重要!你需要根據你的實際情況修改一些變數。

    • APP_KEY:這是 Laravel 的應用程式密鑰,很重要!請執行以下命令生成並替換 .env 中的 APP_KEY

      php artisan key:generate
      
    • MODUCORE_API_KEY:這是你的後端 API 的應用程式級別金鑰。你可以隨便設置一串複雜的字串,例如 your_super_secret_moducore_api_key_12345

    • DB_DATABASE, DB_USERNAME, DB_PASSWORD:這些是 MySQL 資料庫的連接資訊,通常在 docker-compose.yml 中定義。請確保 .env 中的值與 docker-compose.yml 中的環境變數一致(預設為 moducore_db, moducore_user, moducore_secret)。

    • REDIS_HOST, REDIS_PASSWORD, REDIS_PORT:Redis 的連接資訊。如果 Redis 沒有密碼,REDIS_PASSWORD 可以保持 null

    • ECPAY_*TWILIO_*:這些是金流和簡訊服務的憑證,如果你不需要這些功能,可以暫時留空。如果你要使用,需要去綠界和 Twilio 註冊服務並獲取這些金鑰。

    • AI_SERVICE_URLAI_SERVICE_INTERNAL_API_KEY:這是如果你的後端需要調用 AI 服務的配置,目前可以先不理會。

    • OCTANE_SERVER, OCTANE_PORT, OCTANE_WORKERS, OCTANE_MAX_REQUESTS:Octane 的配置,通常可以保留預設。

步驟 5:建構並啟動 Docker 容器

現在,我們可以使用 Docker Compose 來啟動所有服務,包括 Laravel 後端、MySQL 資料庫和 Redis。

  1. 回到專案的根目錄(即 my-moducore-project,與 backend-laraveldocker-compose.yml 同級)。

    cd .. # 如果你還在 backend-laravel 目錄中
    
  2. 建構並啟動 Docker Compose 服務:

    docker-compose up --build -d
    
    • up:啟動服務。

    • --build:強制重新建構 Docker 映像檔,確保使用了最新的程式碼。

    • -d:讓服務在後台運行 (detached mode)。

這個命令會下載所需的 Docker 映像檔(MySQL, Redis, PHP),建構你的 Laravel 應用程式映像檔,並啟動所有服務。這個過程可能需要一些時間,特別是第一次運行時。

你可以用 docker-compose ps 命令來查看所有服務的運行狀態。當 backend, db, redis 的狀態都顯示為 healthy 時,表示服務已經正常啟動。

步驟 6:執行 Laravel 資料庫遷移與填充

當 Docker 服務都運行起來後,我們需要進入 backend 容器內部,執行 Laravel 的資料庫遷移和填充,創建實際的資料表和初始數據(例如使用者、角色和權限)。

docker-compose exec backend php artisan migrate --seed

  • docker-compose exec backend:表示進入 backend 這個服務的容器內部執行命令。

  • php artisan migrate --seed:Laravel 的 Artisan 命令,migrate 會運行所有未執行的遷移檔來創建資料表,--seed 會運行 DatabaseSeeder 來填充初始數據。

這一步會創建 users, roles, permissions, user_roles, role_permissions 等資料表,並初始化一個管理員帳號 (admin@example.com / password) 和一些預設的角色權限。

步驟 7:生成 Laravel Octane 配置和 Swagger 文件

這一步是為了讓 Laravel 應用程式在 Octane 模式下運行,並生成方便的前後端協作的 API 文件。

docker-compose exec backend php artisan octane:install --server=swoole
docker-compose exec backend php artisan vendor:publish --provider="L5Swagger\L5SwaggerServiceProvider"
docker-compose exec backend php artisan l5-swagger:generate

  • php artisan octane:install --server=swoole:安裝並配置 Laravel Octane 使用 Swoole 驅動。

  • php artisan vendor:publish --provider "L5Swagger\L5SwaggerServiceProvider":發布 L5-Swagger 的配置檔和視圖檔。

  • php artisan l5_swagger:generate:根據你的控制器註解自動生成 Swagger/OpenAPI 文件。

步驟 8:訪問你的後端服務!

大功告成!現在你的 ModuCore 後端服務應該已經運行起來了。

  • 後端服務主頁: 打開你的瀏覽器,訪問 http://localhost:8000。

    你應該會看到一個簡單的歡迎訊息:「ModuCore Backend is running! Access /api for API endpoints or /api/documentation for Swagger UI.」。

  • Swagger API 文件: 訪問 http://localhost:8000/api/documentation。

    這裡會呈現所有自動生成的 API 文件,你可以看到每個接口的詳細資訊、參數、響應範例等等,非常方便!

恭喜你!你已經成功搭建了一個基於 ModuCore 的高性能模組化 Laravel 後端!

✨ 核心功能詳解: ModuCore 的魔法是什麼?

現在我們已經把專案跑起來了,接著深入了解 ModuCore 的幾個關鍵魔法是如何運作的,讓你對它有更深的體會。

1. 模組化架構:化繁為簡的秘密

ModuCore 最核心的理念就是模組化。想像一下,你的後端不再是一個巨大的鐵球,而是一個個可以獨立插拔的樂高積木!

  • 實現方式:

    • app/Modules/ 目錄: 這是所有模組的家。每個子資料夾(如 User, Payment, Sms, Rbac)就是一個獨立的模組。

    • 每個模組都是一個迷你應用: 每個模組資料夾裡,都有自己的 Controllers (控制器)、Services (服務層)、Models (模型)、Contracts (介面)、Providers (服務提供者) 和 routes.php (路由檔案)。這就像每個模層都有自己的專屬團隊和工作流程。

    • make:module 命令: 這是 ModuCore 的一個超級工具!你只要執行:

      docker-compose exec backend php artisan make:module YourNewModule --all
      

      它就會自動在 app/Modules/ 下幫你建立一個全新的模組 YourNewModule,並填充好這些基本的檔案骨架,省去了你手動創建的麻煩!

  • 為什麼這麼做?

    • 高內聚低耦合: 每個模組只專注於自己的業務,模組之間依賴性低。

    • 易於維護和擴展: 當你需要新增功能或修改某個功能時,你只需要專注於對應的模組,不會影響到其他部分。

    • 團隊協作更順暢: 不同的開發者可以同時開發不同的模組,減少程式碼衝突。

2. RBAC 權限控管:安全又靈活的門禁系統

RBAC (Role-Based Access Control) 是企業級應用中不可或缺的權限管理方式。ModuCore 已經幫你打好了基礎!

  • 核心概念:

    • 權限 (Permission): 最細微的操作,例如 view-users (查看使用者列表)、create-product (創建商品)。

    • 角色 (Role): 一組權限的集合,例如 admin (管理員擁有所有權限)、editor (編輯者擁有編輯相關權限)。

    • 使用者 (User): 系統的使用者,可以被賦予一個或多個角色。

  • 運作原理:

    1. 資料庫設計: roles 表儲存角色,permissions 表儲存權限。user_roles (使用者-角色) 和 role_permissions (角色-權限) 兩個中間表建立了它們之間的關係。

    2. CheckPermission 中介層: 這是關鍵!它位於 app/Http/Middleware/CheckPermission.php。當你的 API 路由需要權限驗證時,你可以在路由上加上這個中介層,並指定所需的權限,例如:

      Route::get('/users', [UserController::class, 'index'])
           ->middleware('permission:view-users');
      

      當請求來到這個路由時,CheckPermission 中介層會自動檢查當前登入的使用者是否有 view-users 這個權限。如果沒有,就會返回 403 Forbidden

    3. 快取優化: 為了讓權限檢查更快,ModuCore 會利用 Redis 快取使用者的權限資訊,避免每次請求都查詢資料庫。

這套機制讓權限管理變得非常高效和靈活,你不需要修改程式碼,只需要調整資料庫中的角色和權限配置,就能輕鬆調整用戶的存取權限。

3. 高效能魔術:Laravel Octane 與 Redis

如果你希望你的 API 能夠應付大量請求,那麼 Octane 和 Redis 就是 ModuCore 的加速器!

  • Laravel Octane (搭配 Swoole):

    • 為什麼快? 傳統 PHP 每次請求都像從零開始蓋一棟房子,Octane 就像只蓋一次地基和框架,之後每次來請求都是在現成的框架上裝修,快很多!它讓 Laravel 應用程式常駐記憶體,省去了重複啟動的開銷。

    • 配置:config/octane.php 裡,你可以調整 workers (工作進程數) 和 max_requests (每個工作進程處理多少請求後重啟一次) 來優化性能。

  • Redis:

    • 角色: 除了作為 Octane 的底層驅動外,Redis 在 ModuCore 中主要扮演了「高速快取」和「隊列處理」的角色。

    • 快取: 像 RBAC 的權限、常用數據的查詢結果都可以丟到 Redis 裡,下次再要用就不用再去資料庫,直接從記憶體拿,速度飛快。

    • 隊列: 對於一些耗時的操作(例如發送郵件、生成報告),可以把它們丟到隊列裡,後端會異步處理,不會阻塞當前請求,提升用戶體驗。

    • 配置:.env 中設置 CACHE_DRIVER=redisQUEUE_CONNECTION=redis 即可啟用。

4. CI/CD 自動化:順暢開發與部署的基石

CI/CD 就像是給你的專案裝上了自動導航系統,讓程式碼從開發到上線一路暢通。ModuCore 預設包含了基於 GitHub Actions 的 CI/CD 配置。

  • 文件位置: /.github/workflows/deploy.yml

  • 核心流程:

    1. 程式碼推送: 當你把程式碼推送到 maindevelop 分支時,CI/CD 流程自動啟動。

    2. 自動化測試: 系統會自動拉取你的程式碼,安裝依賴,然後運行所有單元測試和功能測試。如果測試失敗,它會立即通知你,避免錯誤程式碼進入生產環境。

    3. Docker 映像建構: 測試通過後,它會根據你的 Dockerfile 把後端應用程式打包成一個 Docker 映像檔。

    4. 推送到容器倉庫: 將打包好的 Docker 映像檔推送到 Docker Hub 或 GitHub Container Registry 等倉庫。

    5. 自動部署: 透過 SSH 連接到你的伺服器,拉取最新的 Docker 映像檔,然後使用 docker-compose 自動啟動新服務,並執行資料庫遷移和 Laravel 優化。

這套流程大大減少了手動部署的錯誤,提升了團隊協作效率,讓你寫完程式碼後可以更放心地交付!

5. API 文件自動生成:前後端溝通的橋樑

清晰的 API 文件是前後端高效協作的基礎。ModuCore 透過整合 L5-Swagger 解決了這個問題。

  • 如何生成?

    • 你只需要在你的 Laravel 控制器方法上方,用特定的 PHP DocBlock (PHPDoc) 註解來描述你的 API 接口(例如參數、響應、安全驗證等)。

    • 運行 php artisan l5_swagger:generate 命令,L5-Swagger 就會自動掃描你的程式碼,生成一份標準的 OpenAPI (Swagger) JSON/YAML 文件。

  • 如何查看?

    • 一旦生成,你就可以透過瀏覽器訪問 http://localhost:8000/api/documentation 來查看一個美觀互動的 Swagger UI 介面。

    • 前後端開發者可以直接在這個介面上查看所有 API 接口的詳細資訊,甚至可以直接發送測試請求,大大減少了溝通成本。

🧪 測試範例:確保你的程式碼滴水不漏

寫程式碼不測試就像閉著眼睛開車!ModuCore 專案已經為你準備了一些測試的基礎,讓你寫出的程式碼更可靠。

1. 運行 Laravel 內建測試

Laravel 有非常完善的測試框架,ModuCore 模組也包含了測試範例。

  • 運行所有測試:

    docker-compose exec backend php artisan test
    

    這個命令會運行 backend-laravel/tests/ 目錄下的所有測試檔案。你會看到測試的結果,哪些通過了,哪些失敗了。

  • 模組測試: 你可以在 backend-laravel/tests/Feature/ 下找到像 UserModuleTest.php 這樣的檔案。這些是針對特定模組的功能測試。它們會模擬 HTTP 請求,檢查你的 API 接口是否正常工作,例如創建使用者、獲取使用者列表等等。

2. 壓力測試 (Load Testing)

了解你的 API 在高併發下的表現如何,壓力測試是個好方法。ModuCore 包含了 Apache Bench (ab) 的簡單壓力測試腳本。

  • 前提: 你的本機電腦需要安裝 apache2-utils 套件,裡面包含了 ab 命令。

    • Ubuntu/Debian: sudo apt install apache2-utils

    • macOS (使用 Homebrew): brew install apache-bench

  • 運行壓力測試:

    1. 進入 tests 目錄:

      cd tests
      
    2. 執行腳本:

      ./load_test.sh
      
    • 這個腳本預設會對 http://localhost:8000/api/users 發送 1000 個請求,併發 100 個。

    • 注意: 運行壓力測試前,請確保你的 backend 服務已經在 Docker 中運行,並且 /api/users 接口可以正常訪問(可能需要登入,如果是受保護的路由)。

透過這些測試,你可以確保你的 ModuCore 專案不僅功能正確,而且在高負載下也能表現良好!

🎉 恭喜你!

到這裡,你已經成功了解並初步搭建了一個基於 ModuCore 的 Laravel API 後端。

ModuCore 提供的不僅僅是一堆程式碼,更是一種模組化、高效能、安全且自動化的開發思維。它讓你從繁瑣的基礎建設中解放出來,可以更專注於創造獨特的業務邏輯和解決實際問題。

希望這篇文章能幫助你打開 Laravel 後端開發的新世界,讓你未來的開發之路更加順暢、高效!如果你在實際操作中遇到任何問題,別忘了查閱官方文件,或者在相關社群尋求幫助。

祝你開發愉快!😊

沒有留言:

張貼留言

熱門文章