gpt4 book ai didi

php - Laravel API 版本控制文件夹结构

转载 作者:可可西里 更新时间:2023-11-01 13:20:31 27 4
gpt4 key购买 nike

我是 api 版本控制的新手,所以我的问题是:

1)这个文件夹结构是真的吗?

/app
/controllers
/Api
/v1
/UserController.php
/v2
/UserController.php

路线:

Route::group(['prefix' => 'v1'], function () {
Route::get('user', 'Api\v1\UserController@index');
Route::get('user/{id}', 'Api\v1\UserController@show');
});

Route::group(['prefix' => 'v2'], function () {
Route::get('user', 'Api\v2\UserController@index');
Route::get('user/{id}', 'Api\v2\UserController@show');
});

2)模型和事件的文件夹结构如何,我应该为每个版本制作模型吗?

最佳答案

您的方法对于 API 版本控制是正确的。为了避免在每个 Controller 路径之前重复 Api\vN\ 前缀,您还可以这样做:

Route::group(['prefix' => 'api/v1', 'namespace' => 'Api\v1'], function () {
Route::get('user', 'UserController@index');
Route::get('user/{id}', 'UserController@show');
});

Route::group(['prefix' => 'api/v2', 'namespace' => 'Api\v2'], function () {
Route::get('user', 'UserController@index');
Route::get('user/{id}', 'UserController@show');
});

另外不要忘记更改 Controller 的命名空间。例如:

namespace App\Http\Controllers\v1;

如果您不想自己管理它,您也可以使用一些支持版本控制的 API 库。我成功使用了Dingo很多次,但可能还有更多可用的。

我认为您不应该对模型进行版本化。它们应该代表您当前的数据库结构,因此是唯一的。如果您需要进行一些更改,请尝试使其向后兼容您仍在维护的 API 版本。

事件的故事相同,除非它们与您的 API 紧密耦合。在那种情况下,我认为最好的文件夹结构应该等同于 Controller :

/app
/Events
/Api
/v1
/ApiEvent.php
/v2
/ApiEvent.php
GenericEvent.php

关于php - Laravel API 版本控制文件夹结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51739960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com