Bonjour

J'ai deux question sur les API

Un, Je me demande pour le formalisme des API, est ce que c'est une bonne facon de faire ?
Je veux afficher les categories 1 et 2 pour les filtre 1 et 2

http://monsite.com/api/v2/items/category/1/category/2/filtre/1/filtre/2

Deux, je me demande comment faire en sorte une fois que ca marche, qu'en GET ?

merci pour votre aide.

11 réponses


sylvain
Auteur

Est ce que c'est une bonne pratique de faire comme ceci ?
http://monsite.com/api/items/1,2/filter/2,3

Bonjour,
j'ai rencontré moi aussi un problème similaire, et d'après ce que j'ai lu sur internet il y a deux solutions possible.
tu peux utiliser un séparateur (, , ;, etc) comme tu l'as fais juste au dessus. Le soucis c'est que pour le caching c'est pas top, du coup tu peux transformer ça en plusieurs requetes. Certe ça prend plus de temps la première fois mais ensuite tu gagne temps d'execution et en ressources coté serveur et tu ne complexifira (à remplacer par le mot juste) pas ton API afin de pouvoir traiter ce types de requetes.
Voila j'espère avoir pu aider.

Bonne continuation

sylvain
Auteur

Merci alors si par exemple, je veux afficher toute les locations d'appartement(categorie1) qui ont une piece ou deux, la requete en deux me parait possible.

Mais ca va etre compliqué si je fait
je veux mettre a jour
/annonces/1/pieces/1/options/1,4,5,6,7

  • annonces serait location appartement
  • pieces , le nombres de pieces
  • options serait par exemple chambre(1), cuisine(4), sdb(5), balcon(6), divers(7)

Si tu veux mettre a jour, il te faut utilier une requete POST ou PUT. ton url sera /annonces/1/pieces/1/options et ton JSON :

{
    chambre : 1,
    cuisine : 4,
    sdb : 5,
    balcon : 6,
    divers : 7
}

Pour repondre a ta premiere question, voila ce que je comprends en lisant ton url http://monsite.com/api/v2/items/category/1/category/2/filtre/1/filtre/2
Tu veux afficher le filtre avec id 2 qui est contenu dans un filtre d'id 1 qui est contenu dans une category avec id 2 qui est contenu dans une category d'id 1 qui est dans des items.

J'imagine que tu veux afficher les items ayant la categorie 1 ou 2 et en plus rajouter un filtre, je ferai comme ca personnellement : http://monsite.com/api/v2/items?category=1,2&filter=1,2.

Je rejoins @prbaron sur l'utilisation des arguments GET . Je vois ça de la manière suivante:
ta route dois décrire la ressources à laquelle on accède, ici je pense que c'est les catégories d'appartements. Du coup tu auras une route du type adresseAPI/apt/:id le reste seraient des arguments plus ou moins obligatoires. Par exemple si l'utilisateur cherche un apt de la categorie 1 et qu'il veut spécifier le nombre de pièces => ?piece=2, mais s'il préfère avoir toutes les offres d'abord et trier par lui même il lui suffit de ne pas ajouter l'argument pièces. Je pense que c'est plus simple a gérer comme ça que au niveau du routeur. Et du coup pareil pour les autres arguments.

Edit: Du coup si tu souhaite les apt des categories 1 et 2 il faut 2 requete /apt/1 et /apt/2

sylvain
Auteur

merci a tous
en effet http://monsite.com/api/v2/items?category=1,2&filter=1,2 ferais l'affaire, mais est ce que c'est une bonne pratique de mettre des '?' et des "&" (ici je lis ca et ca me plait, afficher les locations et colocation ayant 1 et 2 pieces)

Mais comme j'essaie d'apprendre Restfull, je veux trouver la solution qui se rapproche le plus de la philosophie.

@sylvain : C'est le format standard des paramètres d'une requête GET, et oui c'est recommandé pour filter une liste d'un API.

sylvain
Auteur

certainement, @tleb mais ca ne ressemble pas a REST

En quoi ça ne ressemble pas à REST ?

Si ça t'interesse: un talk sur REST qui est plutôt cool, peut-être qu'il t'apportera les réponses dont tu as besoin.