Disons que j'ai une application Web JavaScript qui utilise entièrement une API RESTful pour les données.
Disons que cette application a un formulaire de données, et disons que je modifie un enregistrement dans / product / 12345. Lors de la création du formulaire, je fais une demande RESTful à / product / 12345 et j'obtiens les données JSON:
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27
}
Donc, mon formulaire peut évidemment avoir une liste déroulante pour sélectionner un vendeur. Je dois remplir cette liste. D'où les données doivent-elles provenir? Quelle est l'approche la plus courante?
Serait-il logique de l'intégrer à la réponse à la demande / product / 12345?
{
"id": 12345,
"name": "Some Product",
"active": true,
"sales_user_id": 27,
"sales_users": [
{"id": 1, "name": "Anna Graham"},
{"id": 2, "name": "Dick Mussell"},
{"id": 3, "name": "Ford Parker"},
{"id": 4, "name": "Ferris Wheeler"},
{"id": 5, "name": "Jo King"}
]
}
Qu'en est-il lors de la création d'un nouvel enregistrement? Mon API doit-elle également répondre à GET / product / new, avec les éléments suivants?
{
"sales_users": [
{"id": 1, "name": "Anna Graham"},
{"id": 2, "name": "Dick Mussell"},
{"id": 3, "name": "Ford Parker"},
{"id": 4, "name": "Ferris Wheeler"},
{"id": 5, "name": "Jo King"}
],
"categories": [
{"id": 1, "name": "Category 1"},
{"id": 2, "name": "Category 2"},
{"id": 3, "name": "Category 3"},
{"id": 4, "name": "Category 4"},
{"id": 5, "name": "Category 5"}
],
"etc": [ ... ]
}
Réponses:
Je penche vers des points d'extrémité très simples et étroitement focalisés. Je m'attendrais à une demande à un endroit comme / sales_users qui renvoie tous les utilisateurs des ventes.
GET / sales_users:
De même, si vous souhaitez avoir une liste de catégories, j'ajouterais un point de terminaison distinct pour cela.
GET / catégories:
Je ne construirais pas un GET / produit / nouveau. Je créerais plutôt un formulaire dans votre application pour gérer l'ajout de nouveaux produits qui connaît les demandes appropriées pour remplir ses listes (par exemple, GET / categories, GET / sales_users, etc.).
la source
En supposant que la liste des vendeurs est relativement statique, je pense que vous voudriez un appel API distinct
/salesusers
que vous pourriez appeler une fois (au chargement du formulaire, etc.) et économiser afin de ne pas avoir à demander de nouveau ces données chaque temps. N'oubliez pas que dans REST, vous organisez votre API autour des ressources et les vendeurs sont logiquement des ressources distinctes des produits.De même, lorsque vous appelez
/product/new
, vous souhaitez uniquement soumettre des données pour un nouveau produit, qui peuvent inclure un identifiant sales_user, mais rien de plus. Les modifications apportées à un sales_user lui-même constitueraient un appel distinct.la source