Giter Site home page Giter Site logo

restapi's Introduction

L'objectif de ce TD est de reprendre les développements réalisés dans le TD sur Docker et d'étendre cela à une API Rest. Ceci n'est qu'une introduction aux API Rest et vous ne traiterez pas l'asynchronisme ni les aspects liés à la sécurité / authentification / autorisation.

Exercice 1 - API Rest avec FastAPI

Faites une API Rest avec FASTAPI qui accède à une base de donnée mongodb afin de fournir les endpoits suivants :

  • [GET] personnes
  • [POST] personnes
  • [GET] personnes/ssn
  • [DELETE] personnes/ssn
  • [UPDATE] personnes/ssn

Le modèle utilisé, nommé ModelPersonne, doit être composé d'un nom, prenom et ssn. Dans le cas de l'endpoint [POST] personnes, assurez vous qu'une HTTPException soit retournée lorsque le numéro ssn fourni est déjà enregistré.

Indications : vous utiliserez deux conteneurs, le premier remplira la base de donnée (cf. précédent TD), le second exposera l'API Rest sur le port 3000. Il est attendu que votre modèle soit défini dans une fichier model_personne.py, votre application RestAPI soit définie dans un fichier app.py, la logique associée au parsing de ssn soit contenu dans un fichier ssn_parser.py.

Note : utilisez des validator pour vous assurer que le ssn du modèle est valide (https://pydantic-docs.helpmanual.io/usage/validators/).

Exercice 2 - Utilisation d'API tierces

Retravaillez l'endpoint [GET] personnes pour qu'il affiche plus d'informations. Celui-ci devra permettre d'afficher (si spécifié) les informations suivantes :

  • le sex de la personne,
  • la date de naissance de la personne (mois calendaire + année);
  • le lieu de naissance;
  • la position.

Dans le cas du lieu de naissance, utilisez le service HTTP et le parsing de fichier :

  • Lorsque la personne vient de France, utilisez l'API https://api.gouv.fr/les-api/api-geo afin d'afficher le vrai nom du département de naissance et le vrai nom de la commune.
  • Lorsque la personne vient de l'étrager, utilisez le fichier pays.json

Note : il serait bon de tester votre parsing de ssn afin de vous assurer que les informations extraites sont cohérentes.

Exercice 3 - Livraison

Rédigez un docker compose permettant de lancer le tout.

Exercice 4 - Changement de backend

Modifiez votre API pour que celle-ci fonctionne avec un stockage des données basé sur un fichier json et non plus une base de données. Pour vous aider, vous pourriez utiliser les appels suivant :

import json

def read_json(json_path):
  with open(json_path, "r") as f:
    return json.loads(f.read())

def write_json(json_path, data):
  with open(json_path, "w") as f:
    json.dupmp(data, f, indent=4)

Modifiez votre docker compose pour pouvoir livrer votre nouvelle version

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.