2016-07-29 39 views
3

我刚装流浪者,并显示以下网址的工作:Dingo API - 如何在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'; 
     }); 

    }); 

我想包含在URL版本V1,我怎么弄这工作? 当我尝试:

http://website.dev/api/v1/test

我得到错误:

{ 
"message": "404 Not Found", 
"status_code": 404 
} 

.env文件,我有:API_PREFIX=api

根据Dingo Configuration

Avoid putting a version number as your prefix or subdomain as versioning is handled via the Accept header.

+0

试试这个。 https://github.com/dingo/api/wiki/Making-Requests-To-Your-API我希望这可以帮助你 – vroldan

回答

4

dingoAPI的版本不能以这种方式工作。因为它们不是在URI中对API进行版本控制,所以您需要定义一个Accept标头来请求特定的版本。头被格式化,像这样:

Accept: application/vnd.YOUR_SUBTYPE.v1+json 

对于访问的版本,您将需要一个HTTP客户端就像postman

2

要解决野狗版本方案,您可以使用路由组的版本方法中,而忽略接受标题。类似这样的:

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

    }); 

}); 
相关问题