2.3. 创建端点
优质
小牛编辑
137浏览
2023-12-01
一个端点是一个路由的另一种说法。当讨论 API 的时候,很多人把访问的路由称作为一个端点。
版本组
为了避免与你主要的项目路由冲突,dingo/api 将会使用其专属的路由实例。要创建端点,我们首先需要获得一个 API 路由的实例:
$api = app('Dingo\Api\Routing\Router');
现在我们必须定义一个版本分组。这种定义方式有利于后续为相同端点新增多版本支持。
$api->version('v1', function ($api) {
});
如果你想一个分组返回多个版本,只需要传递一个版本数组。
$api->version(['v1', 'v2'], function ($api) {
});
通过在第二个参数上传递一个属性数组,你也可以将此组视为特定框架的标准组。
$api->version('v1', ['middleware' => 'foo'], function ($api) {
});
你还可以嵌套常规组以进一步定制某些端点。
$api->version('v1', function ($api) {
$api->group(['middleware' => 'foo'], function ($api) {
// Endpoints registered here will have the "foo" middleware applied.
});
});
创建端点
一旦你有了一个版本分组,你就可以在分组闭包的参数中,通过 $api
创建端点。
$api->version('v1', function ($api) {
$api->get('users/{id}', 'App\Api\Controllers\UserController@show');
});
因为端点被每个版本分组了,你可以为相同 URL 上的同一个端点创建不同响应。
$api->version('v1', function ($api) {
$api->get('users/{id}', 'App\Api\V1\Controllers\UserController@show');
});
$api->version('v2', function ($api) {
$api->get('users/{id}', 'App\Api\V2\Controllers\UserController@show');
});
你也可以使用各自的方法注册资源和控制器。
提醒,你需要为控制器添加说明完整的命名空间,比如,
App\Http\Controllers
.
命名路由和生成 URLs
命名你的路由可以使你方便的生成他们的 URL。你可以跟 Laravel 一样的方法命名你的路由。
$api->get('users/{id}', ['as' => 'users.index', 'uses' => 'Api\V1\UserController@show']);
现在你可以为命名的路由生成 URL 了。
app('Dingo\Api\Routing\UrlGenerator')->version('v1')->route('users.index');
你需要提供一个版本,这样才能基于这个版本的路由生成正确的 URL。并且允许你在不同版本中使用相同的名字。
在命令行中查看路由
如果你正在使用 Laravel 5.1 你可以使用 Artisan 命令看到你注册的路由。
$ php artisan api:routes
这个命令和 Laravel 自带的 route:list
命令相同。