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 のバージョンはこのようには機能しません。API は URI でバージョン管理されていないため、Accept ヘッダーを定義して特定のバージョンを要求する必要があります。ヘッダーは次のようにフォーマットされます。

Accept: application/vnd.YOUR_SUBTYPE.v1+json

バージョンにアクセスするには、 postmanのような HTTP クライアントが必要です

于 2016-08-07T11:17:07.483 に答える
4

dingo バージョン スキームを回避するには、バージョン メソッド内でルート グループを使用し、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!' ;
        });

    });

});
于 2016-10-26T14:48:26.323 に答える