我刚刚安装了Dingo,它似乎可以使用以下网址:
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) {
$api->get('test', function () {
return 'Test';
});
$api->get('hello', function () {
return 'Hello';
});
});
我希望版本v1包含在URL中,如何让它工作? 当我尝试:
http://website.dev/api/v1/test
我收到错误:
{
"message": "404 Not Found",
"status_code": 404
}
在.env
文件中,我有:API_PREFIX=api
避免将版本号作为前缀或子域名 版本控制通过Accept标头处理。
答案 0 :(得分:4)
dingoAPI的版本不能以这种方式工作。因为它们不是在URI中对API进行版本控制,所以您需要定义Accept标头以请求特定版本。标题的格式如下:
Accept: application/vnd.YOUR_SUBTYPE.v1+json
要访问该版本,您需要一个HTTP客户端,如postman
答案 1 :(得分:3)
要解决dingo版本方案,可以在version方法中使用路由组,并忽略accept标头。像这样:
<?php
use Illuminate\Http\Request;
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', function ($api) { // Always keep this to v1, and ignore accept header.
$api->group(['prefix' => 'v1'], function ($api) { // Use this route group for v1
$api->get('/', function () {
return 'Look v1!';
});
});
$api->group(['prefix' => 'v2'], function ($api) { // Use this route group for v2
$api->get('/', function () {
return 'Look v2!' ;
});
});
});