2017-02-25 4 views
0

Lorsque vous nommez un point de terminaison pour créer une version «brouillon» d'une ressource, ce qui constitue une meilleure pratique?Conception de l'API RESTful, nommage des points de terminaison

POST >>/posts

{ 
    title: 'My Post', 
    body: 'The content of my post', 
    status: 'DRAFT', 
} 

Ou vaut-il mieux:

POST >>/posts/drafts

{ 
    title: 'My Post', 
    body: 'The content of my post', 
} 
+1

http://stackoverflow.com/questions/6845772/rest-uri-convention-singular-or-plural-name-of-resource-while-creating-it –

Répondre

0

D'après ce que j'ai vu sur la charge utile, le projet est tout simplement l'état de la ressource. vous pouvez utiliser PUT pour le mettre à jour.

pourriez-vous expliquer plus pourquoi vous voulez DRAFT dans le chemin URI?

+0

«PUT» est pour le remplacement de l'entité entière, ' PATCH' - pour une mise à jour partielle. –

0

Comme avec la plupart des choses que je dirais que cela dépend. L'hypothèse générale en travaillant avec REST est que vous avez des collections de ressources. C'est pourquoi la convention de dénomination la plus courante consiste à utiliser des pluriels lors de la désignation des points de terminaison.

Lorsque je vois et le point de terminaison appelé /posts, je suppose qu'en faisant un GET, je recevrais une collection de messages. De même, en appelant le /posts/{id}, je devrais recevoir un message avec un identifiant particulier. Les collections de ressources sont également intégrées les unes aux autres - lorsque je vois un point d'extrémité /posts/{id}/drafts, je suppose que je recevrais des brouillons pour un poste avec un ID donné.

Maintenant, la question est la suivante: voulez-vous traiter vos données comme deux collections distinctes (que vous auriez à synchroniser en quelque sorte) ou voulez-vous rester avec ces collections intégrées? Si le premier alors vous pourriez avoir deux points d'extrémité /posts et /drafts. Si la seconde, alors vous devriez aller avec le point d'extrémité racine /posts puis /posts/{id}/drafts.

Toutefois, si une publication ne contient pas de collection de brouillons, vous pouvez simplement utiliser un seul point de terminaison /posts et ne pas spécifier d'autres éléments, car cela perturbera la conception de votre API. Tout comme dans votre première proposition.