2013-07-15 4 views
9

Je ne comprends pas comment structurer raisonnablement une API REST (ou REST-like). Imaginez une API pour la création et l'envoi de courriels de bulletin d'information. Vous pouvez avoir les noms/ressources suivants: bulletins d'information (sujet, corps, etc.), listes de diffusion (collections de destinataires) et destinataires (adresses électroniques et données associées).Besoin d'aide pour comprendre les points de terminaison API REST

vous pouvez donc utiliser PUT pour créer une ressource et être retourné son ID:

/newsletter 
/list 
/user 

Vous pouvez obtenir des informations sur une ressource en utilisant GET:

/newsletter/[id] 
/list/[id] 
/user/[id] 

Vous pouvez mettre à jour une ressource existante en utilisant PATCH (ou devrait-il être POST?):

/newsletter/[id] 
/list/[id] 
/user/[id] 

Vous pouvez supprimer une ressource en utilisant sUPPRIMER :

/newsletter/[id] 
/list/[id] 
/user/[id] 
  1. est-ce qui précède correct? Quels sont les points sensibles pour des actions telles que l'envoi d'un bulletin à une liste, l'ajout d'un utilisateur à une liste?

Est-ce que ce qui suit a du sens, et est-ce RESTfull?

/newsletter/[newsletter_id]/send/[mailinglist_id] 
/list/[list_id]/add/[user_id] 
/list/[list_id]/remove/[user_id] 

est-il redondant ou inutile d'avoir list/[id]/add/[id] et list/[id]/remove/[id] points d'extrémité pour les listes, lorsque les utilisateurs peuvent être ajoutés ou supprimés par PATCH à /list/[id]?

Qu'en est-il de la recherche d'un ID d'utilisateur via une propriété telle qu'une adresse e-mail ou un nom? Ou obtenir une liste via un identifiant comme son nom ou quand il a été créé?

Répondre

7

Vous l'avez à peu près cloué, sauf avec les /list/[list_id]/add/[user_id] et /list/[list_id]/remove[user_id], parce que vous avez des verbes dans l'URL - c'est le but des méthodes HTTP.les changer, par exemple:

PUT (or POST) to /list/[list_id]/users/ for adding a user to the list 

et

DELETE to /list/[list_id]/users/[user_id] 

Pour la recherche, je partirais avec url paramétrés pour la liste des ressources, comme:

/newsletter/?name=dfjkhskdfh 
+0

Qu'en est-il du verbe "envoyer"? – jeremiahs

1

Ces verbes sont souvent confondu:

  1. Pour créer une entité vous utilisez POST
  2. Pour mettre à jour - PUT

Ces choses pourraient être traitées de la manière suivante:

POST /newsletters/[newsletter_id]/mailinglists/[mailinglist_id]/mailingfacts - effectue l'envoi des lettres, il est comme l'ajout d'un fait de l'envoi à la collection

/lists/[list_id]/[user_id] - ajoute un utilisateur à la liste

/lists/[list_id]/[user_id] - supprime l'utilisateur de la liste.

Questions connexes