Diferència entre revisions de la pàgina «Serveis web amb Laravel»

De Cacauet Wiki
Salta a la navegació Salta a la cerca
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/edb2cbdf527d056f8caf52b0bf4cf1725f6998c5 Versió amb el codi al mateix api.php]. Es pot fer, però és una solució una mica "guarrilla"
+
* [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.


Perquè Laravel per a serveis web?

No és imprescindible utilitzar Laravel per implementar un servei web. Ens és convenient pels següents motius:

  1. En el curs de M7 de DAW estem treballant amb aquest framework i ens interessa aprofundir el seu coneixement.
  2. Integrarem la part del frontend de la nostra web juntament amb la API que farem.
  3. 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í:

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.