Laravel 項(xiàng)目開發(fā)規(guī)范 API 資源

2023-02-16 17:12 更新

用 API 資源

所有 API 返回的數(shù)據(jù), 必須 使用 Laravel 自帶的 API 資源 進(jìn)行返回。

業(yè)務(wù)邏輯

絕不 在 API 資源中寫業(yè)務(wù)邏輯。在 Service 層封裝邏輯,輸出數(shù)據(jù),Resource 層只做定制。

所有讀取邏輯,皆可封裝到 Service 層或者 Model 層,不應(yīng)該出現(xiàn)在 API Resources 層。

API Resources 層只負(fù)責(zé)確保返回?cái)?shù)據(jù)格式。以及確保 API 返回結(jié)構(gòu)的可溯性。

顯性

API Resources 必須使用顯性的數(shù)據(jù)結(jié)構(gòu),而非隱性。

? 隱性:

<?php

namespace App\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class AssetRateResource extends JsonResource
{
    public function toArray($request): array
    {
        return $this->resource->toArray();
    }
}

? 顯性:

<?php

namespace App\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class AssetRateResource extends JsonResource
{
    public function toArray($request): array
    {
        return [
            // 把所需字段一個(gè)個(gè)列出來
            'asset_uuid' => $this->resource->asset_uuid,
            'rate'    => $this->resource->rate,
        ];
    }
}

返回?cái)?shù)據(jù)格式

蛇形命名法 (snake case) 還是 駝峰命名法 (camel case)?

所有返回?cái)?shù)據(jù) 必須 使用 蛇形命名法。接受請(qǐng)求的數(shù)據(jù),也 必須 使用蛇形命名法。

? 駝峰:

{
    "userType": "robot",
    "avatarUrls": [
        "https://cdn.image.com/r9Z7phw4sFWwi-7YVqSiXuLo0wzMJk9asCrUFA=s256"
    ]
}

? 蛇形:

{
    "user_ype": "robot",
    "avatar_urls": [
        "https://cdn.image.com/r9Z7phw4sFWwi-7YVqSiXuLo0wzMJk9asCrUFA=s256"
    ]
}

參考 GitHub 的 API 設(shè)計(jì):

前端如需使用駝峰命名,可使用 domchristie/humps 包對(duì)請(qǐng)求和結(jié)果的數(shù)據(jù)進(jìn)行轉(zhuǎn)換。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)