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

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

简介

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


什么是RESTful API?

RESTful API(全称为 Representational State Transfer API)是一种遵循 REST 架构原则的构建 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 操作逻辑:

    return response()->noContent();
}

}

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/