Api : Accords mets ~ vins

Automne 2016 - Note : 88/100

Présentation


Ce projet a été élaboré à l'université de Coventry, en Angleterre, dans le cadre du cours "Web API Development" suivi lors de mon semestre d'échange ERASMUS d'Octobre 2016 à Janvier 2017.
Ce module nous a appris à utiliser du JavaScript pour développer une application web full-stack stocké sur un serveur distant. Dans ce projet, on nous a demandé de mettre en pratique ces différentes compétences pour développer une API simple utilisant des API tierces.

Vins

LEs consignes


Pour ce devoir, j'avais besoin de développer une API avec une architecture REST. Il y avait quelques caractéristiques minimum à respecter:

  1. L'utilisateur doit être capable de rechercher un objet sans avoir besoin de s'authentifier.
  2. Afin d'accéder à plus de fonctionnalités, celui-ci aura alors besoin de se créer un compte.
  3. Les utilisateurs authentifiés auront la possibilité de choisir, à partir des résultats d'une recherche, de créer une liste de favoris.
  4. Ils seront capables de manipuler cette liste de favoris à leur guise (ex : mettre à jour un objet, supprimer un objet).

Mon API avait besoin d'effectuer des requêtes en ligne afin de récupérer des données d'autres API ou sites. Je devais bien sélectionner les données que je voulais récupérer des API tierces pour les différents favoris des utilisateurs. Ensuite, la façon dont je sauvegardais ces informations ne dépendait que de moi tant que c’était une des solutions suivantes :

  • stocker les données dans un fichier du système.
  • utiliser une base de données appropriée (SQL, document, ou graph).

Ce devoir a été conçu pour présenter un panel d'outils et frameworks de plus en plus utilisés par de nombreuses personnes dans l'industrie du web. Coté serveur, j'ai dû me servir de NodeJS et de différents package (ex : Mongoose, bcrypt, jasmine). En revanche, je n'étais pas autorisé à utiliser le package d'Express ou des outils Strongloop.

MON API


Accord mets Vins

J'ai décidé de créer une API sur les vins. L'objectif principal de l'API serait d'aider les utilisateurs à trouver les meilleurs vins s'associant au mieux à un plat particulier et également de transmettre un maximum d'informations à propos du vin. J'ai utilisé des API (sites internets) françaises afin d'obtenir les données.
Par exemple, si un utilisateur compte cuisiner une « Choucroute », l'application va alors être capable de renvoyer les meilleures associations de vins avec ce plat. De plus, l'utilisateur va être capable d'obtenir un maximum d'informations sur le vin (le prix, le goût, comment le boire, quand le boire, la température de service, etc …)
L'utilisateur est aussi capable de créer un compte utilisateur. Ceci lui permet de sauvegarder ses propres données et de créer des vins et associations vins/plats favoris.
Toutes les données utilisateurs sont sauvegardées sur une base de données MongoDB héberger sur mLab. Toutes les données des vins et associations sont récupérées par Screen Scraping sur deux différents sites :

  1. Vinatis est un site internet utilisé par l'API pour obtenir les données concernant les différents vins.
  2. Hachette-vins est un site internet utilisé par l'API pour acquérir les informations sur les plats et leurs associations de vins.

Vidéos Projets


J'ai dû soumettre une vidéo présentant l'API en 8 minutes :