Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Laravel] Laravel RESTFul api
Forum PHP.pl > Forum > PHP > Frameworki
adgad
Witam,
uczę się laravela 5 i mam problem ze zrozumieniem logiki działania routingu. Korzystam z tego pakietu:
https://github.com/Arrilot/laravel-api-generator
Routing wygląda tak:
| guest |
| | GET|HEAD | api/v1/users | api.v1.users.index | App\Api\Controllers\UserController@index
| |
| | GET|HEAD | api/v1/users/create | api.v1.users.create | App\Api\Controllers\UserController@create
| |
| | POST | api/v1/users | api.v1.users.store | App\Api\Controllers\UserController@store
| |
| | GET|HEAD | api/v1/users/{users} | api.v1.users.show | App\Api\Controllers\UserController@show
| |
| | GET|HEAD | api/v1/users/{users}/edit | api.v1.users.edit | App\Api\Controllers\UserController@edit
| |
| | PUT | api/v1/users/{users} | api.v1.users.update | App\Api\Controllers\UserController@update
| |
| | PATCH | api/v1/users/{users} | | App\Api\Controllers\UserController@update
| |
| | DELETE | api/v1/users/{users} | api.v1.users.destroy | App\Api\Controllers\UserController@destroy
| |

Do get odwołuję się poprzez adres http://laravel.local/api/v1/users i http://laravel.local/api/v1/users/1/, edit działa pod adresem: http://laravel.local/api/v1/users/1/edit ale nie mam pomysłu jak przetestować działanie update czy delete. Byłby ktoś chętny i pomógł w zrozumieniu tego? Z góry dziękuję.
ctom
postman to czego szukasz
adgad
Dzięki za pomoc. Mam jednak nadal problem. Wywołanie metody POST, HEAD i GET działa bez zarzutu. Przy próbie wywołania DELETE mam :
  1. TokenMismatchException in VerifyCsrfToken.php line 46:

Obszedłem to usuwając(oczywiście rozwiązanie tymczasowe) linijkę:
  1. 'App\Http\Middleware\VerifyCsrfToken',

w app/Http/Kernel.php
Jednak wówczas mam komunikat:
  1. MethodNotAllowedHttpException in RouteCollection.php line 207:
  2. in RouteCollection.php line 207
  3. at RouteCollection->methodNotAllowed(array('GET', 'HEAD', 'POST')) in RouteCollection.php line 194
  4. at RouteCollection->getRouteForMethods(object(Request), array('GET', 'HEAD', 'POST')) in RouteCollection.php line 142
  5. at RouteCollection->match(object(Request)) in Router.php line 729
  6. at Router->findRoute(object(Request)) in Router.php line 652
  7. at Router->dispatchToRoute(object(Request)) in Router.php line 628
  8. at Router->dispatch(object(Request)) in Kernel.php line 214
  9. at Kernel->Illuminate\Foundation\Http\{closure}(object(Request))
  10. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 141
  11. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in ShareErrorsFromSession.php line 55
  12. at ShareErrorsFromSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
  13. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in StartSession.php line 61
  14. at StartSession->handle(object(Request), object(Closure)) in Pipeline.php line 125
  15. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in AddQueuedCookiesToResponse.php line 36
  16. at AddQueuedCookiesToResponse->handle(object(Request), object(Closure)) in Pipeline.php line 125
  17. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in EncryptCookies.php line 40
  18. at EncryptCookies->handle(object(Request), object(Closure)) in Pipeline.php line 125
  19. at Pipeline->Illuminate\Pipeline\{closure}(object(Request)) in CheckForMaintenanceMode.php line 42
  20. at CheckForMaintenanceMode->handle(object(Request), object(Closure)) in Pipeline.php line 125
  21. at Pipeline->Illuminate\Pipeline\{closure}(object(Request))
  22. at call_user_func(object(Closure), object(Request)) in Pipeline.php line 101
  23. at Pipeline->then(object(Closure)) in Kernel.php line 115
  24. at Kernel->sendRequestThroughRouter(object(Request)) in Kernel.php line 84
  25. at Kernel->handle(object(Request)) in index.php line 53

Problem polega na tym że szukam i nie mogę znaleźć gdzie zdefiniowana ta tablica. W plikach routingu też nie widzę nic co by było z tym związane. Czy korzystał ktoś z tego pakietu i wie w czym leży problem? Ewentualnie czy mógłby ktoś polecić jakiś alternatywny pakiet? Z góry dziękuję za każdą odpowiedź naprowadzającą na rozwiązanie problemu smile.gif
Pyton_000
MethodNotAllowedHttpException czyli albo nie wykonujesz DELETE albo w pliku routes.php nie masz zasobu na DELETE.
adgad
Możesz rozwinąć co masz na myśli pisząc:
Cytat(Pyton_000 @ 2.06.2015, 07:39:27 ) *
albo nie wykonujesz DELETE

?
Plik route wygląda tak:
  1. Route::group(['prefix' => 'api/v1', 'namespace' => 'App\Api\Controllers'], function () {
  2. //
  3. Route::resource('users', 'UserController');
  4. });

Trochę tego nie rozumiem. To jest niby kompletny pakiet i wg skromnej dokumentacji ma mieć podstawowe akcje z RESTFul-owego api, więc także i DELETE. Może ktoś polecić jakąś alternatywę dla tego pakietu do laravel5? Wszystko czego potrzebuje to RESTFul API, na wzór FOSRestBundle z symfony.
Pyton_000
Do samego RESTfull nie potrzebujesz żadnego pakietu.
Ten wpis w Routes zapeni Ci to z automatu a generowane kontrolery mają wszystkie niezbędne metody.

Co do wyjaśnienia. Czy na pewno odwołujesz się do dobrego adresy?
http://domain.pl/api/v1/users/1
z metodą DELETE
adgad
Sprawa wyjaśniona, źle przekazywałem parametr do usunięcia ;/
Dzięki wielkie za pomoc
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.