J'ai une base de données avec une table qui contient workout-plans. Un exemple des données est ici:

{
  id: 1,
  level: 'beginner'
  week_index: 1
},
{
  id: 2,
  level: 'beginner'
  week_index: 2
},
{
  id: 3,
  level: 'advanced'
  week_index: 1
}

Quelle est la meilleure façon d'obtenir un élément spécifique en utilisant week_index et level. Ce sont mes idées actuelles mais je ne connais pas les meilleures pratiques pour une API REST.

/workout-plans?level=beginner&week=1
/workout-plans/beginner/1
/workout-plans/beginner?week=1
2
Karl Taylor 26 janv. 2019 à 18:15

3 réponses

Meilleure réponse

Solution 1: je recommande ceci:

Je pense que vous devriez utiliser /workout-plans?level=beginner&week=1. Parce que, de cette manière, il est clair que vous demandez des données au contrôleur workout-plans.


Solution 2, d'une autre manière:

Ou, vous pouvez utiliser: /workout-plans/level/beginner/week/1

Tels que: dans Rails, la configuration de la route peut être comme ceci:
/workout-plans/level/:level/week/:week


J'espère que ça aide.

1
mahfuz 26 janv. 2019 à 15:48

/workout-plans/ est le chemin d'accès à la liste des plans d'entraînement. Donc, il renvoie toujours une liste, même s'il n'y a qu'un seul résultat.

Donc /workout-plans/?level=beginner&week=1 donne 1 résultat, mais sous forme de liste.

Si c'est la manière souhaitée de traiter un seul d'entre eux (par niveau et semaine, pas par identifiant), alors l'URL pour en obtenir un serait quelque chose comme

/workout-plans/1/beginner/
/workout-plans/beginner/1/
/workout-plans/beginner-1/

Ou quelque chose comme ça.

Je préfère le dernier, car il ne suggère pas de niveau entre la liste complète et le chemin de détail; si vous choisissez le premier, que faire si quelqu'un demande /workout-plans/1/.

2
RemcoGerlich 26 janv. 2019 à 16:01

Le moyen REST pour obtenir un élément spécifique serait de créer un formulaire . Vous savez, comme un formulaire sur le Web. Dans ce "formulaire de recherche", le client entrerait la semaine et le niveau, et obtiendrait un résultat ou une redirection vers une liste d'entraînements applicables.

L'URI exact de la page de résultats n'est pas pertinent, bien que votre première solution avec des paramètres de chemin soit compatible avec les formulaires HTML simples, donc cela fonctionnerait immédiatement avec le formulaire HTML GET, ce qui est bien.

En général, pensez toujours aux pages HTML que vous créeriez pour les humains, ce sont généralement celles que vous devriez également créer pour les clients REST.

À moins que vous ne vouliez simplement du JSON sur HTTP, auquel cas il n'y a pas de telles contraintes.

1
Robert Bräutigam 26 janv. 2019 à 16:12