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 中,API 路由通常定義在 routes/api.php 文件中。以下是為示例資源 "Car" 創建 API 路由的代碼:
use IlluminateSupportFacadesRoute;
use AppHttpControllersCarController;
Route::apiResource('cars', CarController::class);
上述代碼會自動生成用于 CRUD 操作的路由,包括 index、store、show、update 和 destroy 方法。
運行以下 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
使用以下命令生成 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();
}
}
為了確保 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/