2016-07-29 79 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!' ; 
     }); 

    }); 

});