2016-11-10 9 views
0

API Restサービスの実現私は、URL署名がAPIバージョンをどのように/どこに渡すかという問題に直面しています。私はLaravelルーティング:uriにオプションのパラメータを追加する方法は?

http://mydomainservice.tld/api/version/entityなどのバージョンを渡すことにしました周りに読み出すことにより

...

オプションとして扱うのバージョンについてや、最新のAPIバージョンを参照する要求を解析し、これは意図のようになります。

http://mydomainservice.tld/version/entity ...

オプションの額面を付加するためにルーティングルールを実現するチャンスがあるかどう質問は、APIの残りの部分でバージョン管理を手配/管理する方法についてより多くのではありませんURIでameter:のような両方のコールについては

Route::group(['prefix' => 'api/'], function(){ 
    Route::get('{v}/subscribers', '[email protected]'); 
    Route::get('subscribers', '[email protected]); 
}); 

を::

これが機能している

http://mydomain.tld/api/subscribers http://mydomain.tld/api/1/subscribers

しかし、私は、単一のルールでそれを解決したいと思います:

Route::get('{v?}/subscribers', '[email protected]'); 

しかし、この第2のルールwそれ自体でon't仕事私のような要求に手を差し伸べるしようとした場合:

http://mydomain.tld/api/subscribers

答えて

2

これはきれいを行うことはできません。すべてのルートパラメータには何らかの種類の値が必要ですが、URLの終わりにはnullを指定できますが、URLの途中には設定できません。今 Route::get('{v}subscribers', '[email protected]')->where('v', '([0-9/]+)?');

あなたが「YOURDOMAIN/API/1 /加入者」と同様に「YOURDOMAIN/API /加入者」にアクセスしていますが、デフォルト値を持っていることを確認することができます。それにもかかわらず

は、超汚い解決策がありますあなたのコントローラーのそのvパラメーターのために。そしてまた、あなたはパラメータとともに来るスラッシュをカットしました。

最後に、これを行わないでください。このような魔法を行うよりも、2つの別々の行を書き、コードを可能な限りきれいに保つことをお勧めします。

+0

ご了承いただき、ありがとうございました:-) – koalaok

関連する問題