【问题标题】:Dingo API - How to add version number in url?Dingo API - 如何在 url 中添加版本号?
【发布时间】:2023-03-17 18:04:02
【问题描述】:

我刚刚安装了 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

根据Dingo Configuration

避免将版本号作为前缀或子域 版本控制通过 Accept 标头处理。

【问题讨论】:

标签: php laravel laravel-5.2 dingo-api


【解决方案1】:

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

Accept: application/vnd.YOUR_SUBTYPE.v1+json

要访问该版本,您需要一个 HTTP 客户端,例如 postman

【讨论】:

    【解决方案2】:

    要解决 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!' ;
            });
    
        });
    
    });
    

    【讨论】:

      猜你喜欢
      • 2018-01-09
      • 2011-02-07
      • 2022-06-23
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 1970-01-01
      相关资源
      最近更新 更多