📅  最后修改于: 2023-12-03 15:07:42.271000             🧑  作者: Mango
在 Laravel 8 中,你可以使用资源类来定义和呈现 RESTful API。资源类可以将数据库中的数据转换为 JSON 格式或其他格式。在本文中,我们将学习如何创建和使用资源类。
创建资源类非常简单,只需要使用 Artisan 命令。假设我们有一个名为 Post 的模型,我们将创建一个名为 PostResource 的资源类:
php artisan make:resource PostResource
该命令将在 app/Http/Resources
目录下创建一个文件名为 PostResource.php
的文件。
在资源类中,我们需要指定要包含在 JSON 响应中的数据。我们可以在 toArray
方法中定义这些数据。
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class PostResource extends JsonResource
{
public function toArray($request)
{
return [
'id' => $this->id,
'title' => $this->title,
'body' => $this->body,
'author' => $this->author->name,
'created_at' => $this->created_at->format('Y-m-d H:i:s'),
'updated_at' => $this->updated_at->format('Y-m-d H:i:s'),
];
}
}
在上面的例子中,我们将 id
、title
、body
、author
、created_at
和 updated_at
列为要在 JSON 响应中包含的数据。
要使用资源类,我们需要在控制器中调用它,并将模型实例传递给它。我们还需要使用 response
辅助函数来将资源响应作为 JSON 返回。以下是一个示例控制器方法:
use App\Http\Resources\PostResource;
use App\Models\Post;
public function show(Post $post)
{
return response()->json(new PostResource($post));
}
在上面的例子中,我们使用 Post
模型实例创建了一个 PostResource
实例,并将其作为 JSON 返回。在此之后,我们可以通过以下 URL 调用该方法:
http://localhost:8000/api/posts/1
在以上 URL 中,1
是 Post
模型实例的 ID。控制器方法将返回以下 JSON 响应:
{
"id": 1,
"title": "Lorem ipsum",
"body": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
"author": "John Doe",
"created_at": "2021-01-01 01:00:00",
"updated_at": "2021-01-01 01:00:00"
}
在 Laravel 8 中,资源类可以帮助我们将模型数据转换为特定格式的 JSON 响应。以上是如何创建和使用资源类的步骤。我们可以在控制器中将资源类实例作为 JSON 返回。