BenJ3D/ft_transcendence-42

[API] USERS

Closed this issue · 0 comments

Blu-ea commented

Étant donné que nous utilisons déjà un back parallèle juste pour nos tests avec des sessions utilisateurs, je précise ici comment nous les utilisons.
Pour les autres routes, champs libre à vous de nous dire comment nous allons les utiliser.

Toutes les requêtes et réponses (même les messages d'erreur) doivent être au format JSON avec un code de statut :

Message de succès type à renvoyer, exemple pour @post /users/:id + code de statut 201 :

{
	"login": "bducrocq",
	"status": 1,
	"password": "$2b$10$/14MsrJrdw3BeDsey/ltl.5glXhpoCKK2krojS4afqxSV1onITa0W",
	"token_2FA": "eyJhbGciOVCJ9.eyJzdWIiOiIxMjoxNTE2MjM5MDIyfQ.Sfl6yJV_adQssw5c",
	"has_2FA": false,
	"nickname": null,
	"avatar_path": null,
	"Id_USERS": 4
}

Message d'erreur type en JSON à renvoyer + code de statut dans la requête grâce à HttpStatus par exemple (voir ci-dessous) :

{
	"message": "login is already taken"
}
import { HttpException, HttpStatus } from '@nestjs/common';
[...]
if (existingUser) {
	throw new HttpException('login is already taken', HttpStatus.CONFLICT);

HttpStatus sort facilement tous les codes possibles


******************* ROUTES USER ***************
Je ne précise que les codes de statut de base que nous gérons déjà côté front, bien entendu vous allez rajouter les multiples cas d'erreurs plus tard, ce serait cool si on pouvait avoir ça sur la doc API 😀

GET:

/users => return [USER] Array de USER  
/users/:id => return obj <USER> 
/users/login/:login => return obj <USER> 

POST

/users ( req body : <USER> ) => si ok renvoyer <USER> + 201(created) | si user deja en db renvoyer code 409(conflict)
/users/login (req body = {login: string, password: string}) /*verifier si couple login/password est ok */ => 203 valid | 401 invalid  

PUT

/users/:id  ( req body : Partial<USER> )  => sucess 200 | 404 Not Found

DELETE

/users /* tous les users */ => sucess 200 
/users/:id /* un seul USER */ => sucess 200 | 404 Not Found