Site internet d'OSER - Backend
Bienvenue ! Ce dépôt est le lieu de développement du backend du site internet de l'association OSER, site qui a pour objectif de soutenir l'association dans son action quotidienne.
Si vous venez d'arriver, vous trouverez ci-dessous les ressources pour bien démarrer.
Happy coding !
Table des matières
Documentation
La documentation complète du backend est disponible dans la documentation technique hébergée sur ReadTheDocs. Toutes les instructions d'installation y sont notamment recensées.
Documentation de l'API
En supplément, la documentation de l'API est accessible sur le serveur Django. Sur le serveur local, vous pouvez donc y accéder à l'URL http://localhost:8000/api/docs
. Vous pouvez aussi librement parcourir l'API à l'adresse http://localhost:8000/api
. Vous pouvez aussi accéder à la documentation de l'API en production.
Authentification
Pour communiquer avec l'API, un client doit être authentifié. La méthode standard de la token authentication est employée ici.
Le principe est le suivant :
- Le client s'authentifie en utilisant un nom d'utilisateur et un mot de passe.
- Le backend génère un token et le renvoie au client.
- Le client peut alors utiliser le token pour réaliser d'autres requêtes qui nécessitent d'être authentifié.
Quel intérêt par rapport à une authentification username/password basique ?
L'avantage est de pouvoir stocker ce token dans un cookie ou dans le stockage local du navigateur, et ainsi éviter de redemander le nom d'utilisateur/mot de passe à chaque réouverture du navigateur.
Concrètement, comment faire pour authentifier un utilisateur ?
Du point de vue d'un client, la procédure d'authentification se fait en 2 étapes :
A. Récupération du token en envoyant une requête POST à l'endpoint /api/auth/get-token
avec le username
et le password
fournis par l'utilisateur.
$ curl -X POST -d "username=user&password=pass" localhost:8000/api/auth/get-token/
{"token":"b6302cebe7817532987e7a8767611b2600414915"}
B. Usage du token lors de futures requêtes en envoyant le paramètre Authorization: Token <token>
dans l'entête.
$ curl -X GET "localhost:8000/api/articles/" -H "Authorization: Token b6302cebe7817532987e7a8767611b2600414915"
[{"id": 39, "content": ...}, ...]
Dépendances
Django
Django est un framework de développement web pour Python. Le site d'OSER utilise Django en version 2.0.
Note aux devs : il y a quelques changements non-rétrocompatibles de Django 2.0 par rapport à la version précédente 1.11. Faites attention à vérifier la version de Django supportée par des bibliothèques tierces que vous voudriez utiliser.