指南

响应

了解模型如何被转换为 JSON 响应。

Orion 使用 API 资源作为 Eloquent 模型与最终返回给 API 客户端的响应之间的转换层。

为了让这些类能够被自动解析,它们应遵循如下命名模式:App\Http\Resources\<model>Resource 或 App\Http\Resources\<model>CollectionResource。

例如,如果你有一个 App\Models\Message 模型,对应的资源类就是 App\Http\Resources\MessageResource 或 App\Http\Resources\MessageCollectionResource。

如果应用中的资源类名不遵循该命名约定,或者你只是想更加明确,可以在控制器上将 protected $resource 或 protected $collectionResource 属性设置为资源类的完全限定类名。

<?php

namespace App\Http\Controllers\Api;

use App\Models\Message;
use App\Http\Resources\CustomMessageResource;
use App\Http\Resources\CustomMessageCollectionResource;

class MessagesController extends ApiController
{
    /**
     * @var string $model
     */
    protected $model = Message::class;

    /**
     * @var string $resource
     */
    protected $resource = CustomMessageResource::class;

    /**
     * @var string $collectionResource
     */
    protected $collectionResource = CustomMessageCollectionResource::class;
}
Orion\Http\Resources\Resource 和 Orion\Http\Resources\CollectionResource 类上都提供了一个便捷的 toArrayWithMerge 方法——不妨去看一看。