【发布时间】:2023-03-24 07:55:02
【问题描述】:
我是 Laravel(4 和 5)的新手,最近一直在研究 RESTful API。 为了允许 API 的多个版本,我使用 URL 来确定版本。
似乎大多数人都在遵循这种方法: How to organize different versioned REST API controllers in Laravel 4?
文件夹结构:
/app
/controllers
/Api
/v1
/UserController.php
/v2
/UserController.php
在UserController.php 文件中,我相应地设置了命名空间:
namespace Api\v1;
或
namespace Api\v2;
在路线中:
Route::group(['prefix' => 'api/v1'], function () {
Route::get('user', 'Api\v1\UserController@index');
Route::get('user/{id}', 'Api\v1\UserController@show');
});
Route::group(['prefix' => 'api/v2'], function () {
Route::get('user', 'Api\v2\UserController@index');
Route::get('user/{id}', 'Api\v2\UserController@show');
});
版本 1 的 URL 将是 http://..../api/v1,版本 2 的 URL 将是 http://..../api/v2。这很简单。
我的问题是:
如果我正在构建 API 的小升级,比如 v1.1,我该如何组织我的文件夹结构?
我的想法如下,因为 dot 是文件夹的有效名称,这应该还可以吗?
/app
/controllers
/Api
/v1
/UserController.php
/v1.1
/UserController.php
/v1.2
/UserController.php
/v2
/UserController.php
还有,命名空间应该怎么写?没有这样的命名空间
namespace Api\v1.1;
我可以参考使用“点”的命名约定吗?
注意:我不想将其称为 v2 版本,因为这不是重大升级。
【问题讨论】:
-
如果你将使用 apiResource 路由,你应该使用“name”属性。 ->name('v2') 或 'name' => 'v2' 靠近前缀。