ProgWebAv TP3

1) Controller pour une API REST (WebServices)

Afin de bien séparer le backend de notre application du frontend, nous allons réaliser une API en suivant la philosophie RESTful (ou plutôt RESTLike puisque nous avons une persistance de l’autentification) pour l’accès aux resources (Model ?) du backend.

Dans ce TP, nous simulerons un besoin du frontend qui serait le suivant: effectuer une gestion (CRUD ?) de news liés aux utilisateurs de l'application. Chaque utlisateur pourra créer une liste de news.

Le framework Laravel nous propose justement un routage automatique pour des URL respectant la philosophie REST: routage REST Laravel. De plus, le Framework nous porpose une automatisation de la création du Controller associé à ces routes grâce à la commande suivate:

php artisan make:controller NewsController --resource

2) Routage

L'API ne sera disponible que pour les utilisateurs authentifiés. Créez donc un groupe de route avec le bon middleware (voilà pourquoi notre API est RESTlike et non RESTful, puisque le mécanisme de session est utilisé). Puis à l’interieur de ce groupe, créez un routage REST vers votre NewsController. Supprimez les routages automatiques ‘create’ et ‘edit’ qui ne seront pas utilisés.

3) Model

Commencez par créer une nouvelle migration afin de créer la table qui contiendra les news:

php artisan make:migration create_news_table --create=news

Modifiez le code généré pour y ajouter les colonnes de la table (qui seront simplement un champ de type “string” pour le titre de la news, et un champ de type integer(unsigned) pour la clé étrangère de l’utilisateur à qui appartient la news. Puis indiquez à quoi la clé étrangère fait référence ( foreign key Laravel).

Puis, créez une classe Model nommée News (avec la représentation de la jointure one to many entre les utilisateurs et les news)

4) Finalisation du controller

Complétez les méthodes de la classe NewsController du point 1) pour y ajouter les fonctionnalités de votre API REST. Les données retournées par votre API devront être au format JSON

Pour tester les fonctionnalités de votre API, vous pouvez utiliser un module de votre browser (comme POSTMan par exemple).

Rajoutez le MiddleWare ACL Rest du TP2.