简介
许多公司,尤其是 SaaS 公司,在他们的应用程序中使用这种技术,这取决于您应用程序的上下文,可能非常有用。
在 Laravel 中实现 API 版本化有许多方法。我在本文中将展示的是其中最简单的一种,让您可以轻松地将此技术应用到您的应用程序中。
什么是 API 版本化
API 版本化是指发布多个 应用程序编程接口 (API) 的版本来支持不同的功能、特性或向后兼容性的实践。它允许开发人员在不过多影响现有集成或用户的情况下,随着时间的推移更新和改进他们的 API。当一个 API 更新时,通常会发布一个新的版本,并且会维护旧版本一段时间以允许用户过渡到新版本。这允许开发人员在不影响现有集成功能的情况下添加新功能或更改他们的 API。它还使用户可以根据需要和系统兼容性选择使用哪个版本的 API。
准备路由
首先,让我们为 API 的版本准备我们的路由文件。在 routes
文件夹中创建一个文件夹
mkdir routes/api
接下来,在新建的文件夹中创建两个 PHP 文件
touch routes/api/v1.php
touch routes/api/v2.php
现在,让我们编辑 routes/api.php
文件,使其看起来像这样
<?php
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
require __DIR__.'/api/v1.php';
require __DIR__.'/api/v2.php';
创建测试路由
为了确保我们的 API 版本正在工作,让我们创建一些测试路由。
更新 routes/api/v1.php
文件,使其看起来像这样
<?php
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(function () {
Route::get('test', function () {
return response()->json(['message' => 'API V1 working']);
});
});
现在,将routes/api/v2.php
文件更新如下
<?php
use Illuminate\Support\Facades\Route;
Route::prefix('v2')->group(function () {
Route::get('test', function () {
return response()->json(['message' => 'API V2 working']);
});
});
测试版本化路由
让我们使用配备在我们Laravel
应用中的开箱即用的PHPUnit
来测试我们新创建的版本化路由。
在tests/Feature
目录下创建一个新的测试文件命名为ApiVersionTest.php
并更新它如下
<?php
namespace Tests\Feature;
use Tests\TestCase;
class ApiVersionTest extends TestCase
{
public function testV1RouteReturnsSuccessResponse()
{
$this->get('api/v1/test')
->assertOk()
->assertJsonStructure(['message']);
}
public function testV2RouteReturnsSuccessResponse()
{
$this->get('api/v2/test')
->assertOk()
->assertJsonStructure(['message']);
}
}
现在,使用Laravel Artisan
,运行:php artisan test
,你将在终端看到类似以下的输出
PASS Tests\Feature\ApiVersionTest
✓ v1 route returns success response
✓ v2 route returns success response
其他技巧
现在API版本化运行正常后,根据应用环境,我们还可以
在
users
表中创建一个新的字段来跟踪每个用户应该使用哪个API
版本。
在
app/Http/Kernel class
中为每个版本创建不同的middleware groups
。
结论
在这篇文章中,我们学习了什么叫做API版本化
,以及如何在我们的Laravel
应用中以一个简单直白的方式进行实现。
希望你喜欢这篇文章,如果你喜欢,别忘了和你的朋友分享!!!再见!😉
以下是喜欢本文的读者:driesvints, fadela, wpdew, camquipc