Laravel 11中构建RESTful API的终极指南

作者:API传播员 · 2025-11-10 · 阅读时间:4分钟
本指南详细介绍了在Laravel 11中构建RESTful API的完整流程,包括定义API路由、创建模型和迁移、实现控制器逻辑以及使用API资源确保响应结构化。通过具体示例,帮助开发者快速掌握Laravel 11构建高效API的方法,并涵盖优化技巧如API文档生成和单元测试。

简介

在现代Web开发中,RESTful API 是一种广泛使用的架构风格,它通过标准的HTTP协议实现客户端与服务器之间的交互。Laravel 11 提供了一系列强大的工具和功能,使开发者能够快速构建高效的 RESTful API。本指南将带您一步步学习如何在 Laravel 11 中构建一个功能完善的 RESTful API。


什么是RESTful API?

RESTful API(全称为 Representational State Transfer API)是一种遵循 REST 架构原则的接口设计方式。它通过 HTTP 方法(如 GET、POST、PUT 和 DELETE)实现客户端与服务器的交互。Laravel 提供了丰富的内置工具,例如路由管理、身份验证和 API 测试,极大地简化了 API 的开发流程,使开发者能够更快、更高效地构建 API。


准备工作

在开始构建 Laravel API 之前,请确保您已安装 Laravel 11。如果尚未安装,可以通过 Composer 进行安装:

composer create-project laravel/laravel laravel-api

安装完成后,进入项目目录:

cd laravel-api

接下来,配置 .env 文件中的数据库连接信息:

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_api
DB_USERNAME=root
DB_PASSWORD=

完成配置后,运行以下命令以创建默认表结构:

php artisan migrate

在 Laravel 11 中创建 RESTful API

1. 定义 API 路由

在 Laravel 中,API 路由通常定义在 routes/api.php 文件中。以下是为示例资源 "Car" 创建 API 路由的代码:

use IlluminateSupportFacadesRoute;
use AppHttpControllersCarController;

Route::apiResource('cars', CarController::class);

上述代码会自动生成用于 CRUD 操作的路由,包括 indexstoreshowupdatedestroy 方法。


2. 创建模型和迁移

运行以下 Artisan 命令,为 "Car" 资源生成模型、迁移和工厂:

php artisan make:model Car -m

然后,修改生成的迁移文件 database/migrations/xxxx_xx_xx_create_cars_table.php,定义表结构:

use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;

class CreateCarsTable extends Migration
{
    public function up()
    {
        Schema::create('cars', function (Blueprint $table) {
            $table->id();
            $table->string('make');
            $table->string('model');
            $table->integer('year');
            $table->decimal('price', 10, 2);
            $table->timestamps();
        });
    }

    public function down()
    {
        Schema::dropIfExists('cars');
    }
}

运行以下命令以执行迁移,创建数据库表:

php artisan migrate

3. 创建控制器

使用以下命令生成 API 控制器:

php artisan make:controller CarController --api

然后,编辑生成的控制器文件 app/Http/Controllers/CarController.php,实现 CRUD 操作逻辑:

namespace AppHttpControllers;

use AppModelsCar;
use IlluminateHttpRequest;
use AppHttpResourcesCarResource;

class CarController extends Controller
{
    public function index()
    {
        return CarResource::collection(Car::all());
    }

    public function store(Request $request)
    {
        $validated = $request->validate([
            'make' => 'required|string|max:255',
            'model' => 'required|string|max:255',
            'year' => 'required|integer',
            'price' => 'required|numeric',
        ]);

        $car = Car::create($validated);

        return new CarResource($car);
    }

    public function show(Car $car)
    {
        return new CarResource($car);
    }

    public function update(Request $request, Car $car)
    {
        $validated = $request->validate([
            'make' => 'required|string|max:255',
            'model' => 'required|string|max:255',
            'year' => 'required|integer',
            'price' => 'required|numeric',
        ]);

        $car->update($validated);

        return new CarResource($car);
    }

    public function destroy(Car $car)
    {
        $car->delete();

        return response()->noContent();
    }
}

4. 创建 API 资源

为了确保 API 响应的结构化和一致性,可以使用 Laravel 提供的 API 资源。运行以下命令生成资源类:

php artisan make:resource CarResource

然后,编辑生成的资源文件 app/Http/Resources/CarResource.php

namespace AppHttpResources;

use IlluminateHttpResourcesJsonJsonResource;

class CarResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'make' => $this->make,
            'model' => $this->model,
            'year' => $this->year,
            'price' => $this->price,
            'created_at' => $this->created_at->toDateTimeString(),
            'updated_at' => $this->updated_at->toDateTimeString(),
        ];
    }
}

结论

通过本指南,您已经学习了如何在 Laravel 11 中构建一个完整的 RESTful API。我们涵盖了从定义 API 路由到创建模型、控制器和资源的完整流程。此外,您还可以进一步优化 API,例如使用 Laravel Swagger 生成 API 文档,或通过 PHPUnit 进行单元测试。

遵循这些最佳实践,您可以高效地构建出可扩展且安全的 Web 应用程序。

原文链接: https://techliphant.com/blog/ultimate-guide-to-building-a-restful-api-in-laravel-11/