Wiem, że istnieje sposób tworzenia wersjonowanych adresów URL dla interfejsów API REST z trasami, ale jaki jest najlepszy sposób na organizowanie kontrolerów i plików kontrolerów? Chcę móc tworzyć nowe wersje interfejsów API i nadal starsze wersje powinny działać przez co najmniej jakiś czas.Jak zorganizować różne wersje kontrolerów REST API w Laravel 4?
20
A
Odpowiedz
37
skończyło się używając nazw i katalogów pod app/kontrolerów:
/app
/controllers
/Api
/v1
/UserController.php
/v2
/UserController.php
I w plikach UserController.php ustawić nazw odpowiednio:
namespace Api\v1;
lub
namespace Api\v2;
Potem na moich trasach zrobiłem coś takiego:
Route::group(['prefix' => 'api/v1'], function() {
Route::get('user', 'Api\v1\[email protected]');
Route::get('user/{id}', 'Api\v1\[email protected]');
});
Route::group(['prefix' => 'api/v2'], function() {
Route::get('user', 'Api\v2\[email protected]');
Route::get('user/{id}', 'Api\v2\[email protected]');
});
Nie jestem pewien, że to najlepsze rozwiązanie. Jednak pozwoliło to na wersjonowanie kontrolerów w taki sposób, aby nie zakłócały one wzajemnie. Prawdopodobnie mógłbyś zrobić coś weryfikując podobne modele, jeśli to konieczne.
Kiedy używałem tej metody, musiałem odwoływać się do każdej klasy spoza obszaru nazw przy użyciu pełnej ścieżki (przykład: \ Input, \ App) –
Możesz również dodać instrukcję 'use App;'. Tak działają przestrzenie nazw. –
@ iah.vector - mają problem z wersją, tylko musi kontroler idzie do v1 lub modelu, zadania, żądania i ... także musi iść do folderu vesrion? –