Diferència entre revisions de la pàgina «Serveis web amb Laravel»
Línia 37: | Línia 37: | ||
== Exemples de API: laravel-karaoke == | == Exemples de API: laravel-karaoke == | ||
En el projecte karaoke en Laravel, el podeu veure aquí: | En el projecte karaoke en Laravel, el podeu veure aquí: | ||
− | * [https://github.com/emieza/laravel-karaoke/commit/ | + | * [https://github.com/emieza/laravel-karaoke/commit/8ab648decd6b58380545c60b135bad849a622d77 Versió amb el codi a api.php]. Es pot fer, però és una solució una mica "guarrilla" |
− | * [Versió amb el codi en un controller]. Només veiem les rutes, però és raonable que no posem mogollón de codi aquí, sinó al controller. | + | * [https://github.com/emieza/laravel-karaoke/blob/master/routes/api.php Versió amb el codi en un ''controller'']. Només veiem les rutes, però és raonable que no posem mogollón de codi aquí, sinó al [https://github.com/emieza/laravel-karaoke/blob/master/app/Http/Controllers/TemaController.php TemaController] en aquest cas. |
+ | |||
+ | Recordem que per crear un controller amb Laravel ho fem amb (per exemple): | ||
+ | $ php artisan make:controller ApiController | ||
+ | |||
+ | Si mireu [https://github.com/emieza/laravel-karaoke/blob/master/app/Http/Controllers/TemaController.php TemaController] pareu atenció que per poder fer crides com <code>TemaController::fet($id)</code> , necessitem que siguin funcions estàtiques (static). | ||
+ | |||
+ | Ara, per poder mirar el nº de vots, a '''routes/api.php''' tindrem: | ||
+ | <syntaxhighlight lang="php"> | ||
+ | Route::get('/nvots/{id}', function(Request $request, $id) { | ||
+ | return TemaController::nvots( $id ); | ||
+ | }); | ||
+ | </syntaxhighlight> | ||
<br> | <br> |
Revisió del 17:24, 9 març 2017
Per poder seguir amb normalitat aquest article cal haver llegit i treballat Laravel.
Contingut
Perquè Laravel per a serveis web?
No és imprescindible utilitzar Laravel per implementar un servei web. Ens és convenient pels següents motius:
- En el curs de M7 de DAW estem treballant amb aquest framework i ens interessa aprofundir el seu coneixement.
- Integrarem la part del frontend de la nostra web juntament amb la API que farem.
- Laravel facilita l'accés a la base de dades a través del ORM Eloquent, que resulta molt útil.
Primera prova de la API
Totes les funcions que vulguem implementar per al nostre sistema hem de començar per indicar-les al arxiu de rutes:
routes/api.php
De fet, les podríem implementar al mateix arxiu. Quan es compliquin, però, convindrà crear un controlador com vam fer al tutorial de Laravel.
Afegiu el següent codi a routes/api.php:
Route::get('/ping', function(Request $request) {
return "pong! :)";
});
Poseu en marxa el servidor i proveu la funció amb:
$ curl localhost:8000/api/ping pong! :)super@HPi5-07:~/dev/laraveltest1$
Noteu que:
- Encara que hem definit la ruta "/ping", per poder-la cridar hem de fer "/api/ping". Ve predefinit pel Laravel, tot i que no té perquè ser així.
- Ens contesta el què hem posat al RETURN final
- No retorna HTML, retorna un text que pot ser qualsevol cosa
- No hi ha \n final (s'enganxa amb el prompt de la shell)
Exemples de API: laravel-karaoke
En el projecte karaoke en Laravel, el podeu veure aquí:
- Versió amb el codi a api.php. Es pot fer, però és una solució una mica "guarrilla"
- Versió amb el codi en un controller. Només veiem les rutes, però és raonable que no posem mogollón de codi aquí, sinó al TemaController en aquest cas.
Recordem que per crear un controller amb Laravel ho fem amb (per exemple):
$ php artisan make:controller ApiController
Si mireu TemaController pareu atenció que per poder fer crides com TemaController::fet($id)
, necessitem que siguin funcions estàtiques (static).
Ara, per poder mirar el nº de vots, a routes/api.php tindrem:
Route::get('/nvots/{id}', function(Request $request, $id) {
return TemaController::nvots( $id );
});
Especificacions d'una API
És molt important especificar adequadament una API per tal que la pugui fer servir molta gent.