2010-06-27 4 views
3

Lorsque vous concevez un schéma d'URL pour votre application, quelles règles utilisez-vous?REST: post vs posts & new vs create

  • example.com/post/ ou example.com/posts/ pour la liste des messages
  • example.com/post/new/ ou example.com/post/create/ pour le nouveau poste
  • example.com/posts/ + example.com/post/23/ ou example.com/post/ + exampl e.com/post/23/ pour la liste et le détail du message?
  • example.com/post/23 ou example.com/post/23/ pour plus de détails
  • example.com/post/edit/23/ ou example.com/post/23/ edit/ pour l'édition.

Je préférais: /post/ pour la liste, /poste/23/ pour plus de détails, /post/23/modifier/ pour l'édition, juste b/c je suis peut très travail facile avec cette URL à la main dans la barre d'adresse du navigateur. J'ai tort? Proposez-moi, s'il vous plaît.

Merci.

Répondre

3

Vous devez probablement utiliser la méthode HTTP POST lors de la création d'une nouvelle ressource. Ainsi, pour un nouveau client, vous pouvez POST sur example.com/customer. Ensuite, si vous voulez des informations sur ce client, faites un GET sur example.com/customer/{votre identifiant client récemment créé}. Si vous voulez tous les clients, faites un GET à example.com/customer Si vous voulez éditer un client, vous voudrez probablement METTRE à l'adresse example.com/customer/{ votre identifiant client}

Il semble que votre fondamental problème est que vous avez affaire est que vous spécifiez votre action (ou verbe) dans votre URL. Vous n'avez pas besoin de faire ça. Au lieu de faire quelque chose comme example.com/edit/23, vous devriez utiliser la méthode HTTP PUT avec example.com/23 (ou example.com/customers/23).

Jetez un oeil à what is RESTful/REST pour un examen sur la création de ressources RESTful.

Jetez un oeil à PUT vs POST in REST pour la différence entre POST et PUT (modifier et créer).

Pour construire des URL RESTful plus complexes, je me réfère généralement à this presentation à partir des nerds LinkedIn.

+0

Ok, merci. Ma question n'était pas exactement sur la façon d'utiliser POST, PUT, etc. Je veux juste clarifier comment les gens conçoivent des schémas d'URL utiles (un mauvais anglais ne permet pas d'expliquer cela en question). Mais le lien de présentation de votre réponse est très utile pour moi! –

+0

@Zada: J'ai ajouté un peu à mon message original. Il semble que le problème fondamental auquel vous faites face est que vous n'avez pas besoin d'utiliser des choses comme créer ou éditer dans votre URL. Vous accomplissez cela en utilisant différentes méthodes HTTP. – labratmatt

+0

+1 si les verbes se glissent dans vos URI, vous n'êtes probablement pas reposant. – nategood

0

J'utilise:

  • GET/messages pour la liste
  • GET/messages/nouveaux à obtenir le formulaire HTML vide pour 'statiques' uniquement les sites ('ajax' sites et « stand-alone 'les clients ne ont pas besoin)
  • POST/messages pour créer (' action » attr sous forme précédente)
  • GET/messages/23 pour détail (pas pour le montage!)
  • GET /messages/23/modifier pour obtenir remplir un formulaire HTML avec caché '_method = PUT' champ Émuler PUT dans les navigateurs
  • PUT /messages/23 pour l'édition ('action' attr sous forme précédente)
  • supprimer/messages/23 pour la suppression (formulaire HTML 'en ligne' avec '_method = DELETE' pour émuler)
  • POST /messages/23 pour émuler PUT et supprimer dans les navigateurs

Et je n'utilise jamais/posts/ou/posts/23/parce que cela rend difficile (ou sale) de changer le format de réponse. Je peux utiliser/posts (synonyme de /posts.html) pour les navigateurs, /posts.xml pour les services XML, /posts.json pour les données 'ajax' et /posts.smth_else pour smth else :) dans le futur. En outre, ils peuvent tous être des fichiers statiques (cache ou archive) pour libérer du CPU et de la mémoire en cas de charge élevée.

Questions connexes