3

我刚刚安装了 Dingo,它似乎可以使用以下 URL:

http://website.dev/api/test

http://website.dev/api/hello

$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 标头处理的。

4

2 回答 2

6

dingoAPI 的版本不能这样工作。因为他们没有在 URI 中对 API 进行版本控制,所以您需要定义一个 Accept 标头来请求特定版本。标头的格式如下:

Accept: application/vnd.YOUR_SUBTYPE.v1+json

要访问该版本,您将需要像postman这样的 HTTP 客户端

于 2016-08-07T11:17:07.483 回答
4

要解决 dingo 版本方案,您可以在版本方法中使用路由组并忽略接受标头。像这样的东西:

<?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!' ;
        });

    });

});
于 2016-10-26T14:48:26.323 回答