Quels sont les meilleurs et les plus communs verbes et actions d’URL RESTful?

J’essaie de trouver des informations sur les meilleures actions d’URL RESTful.

Par exemple, quelle URL utilisez-vous pour afficher les détails d’un élément, pour modifier l’élément, mettre à jour, etc.

/question/show/ /question/edit/ /question/update/ (this is the post back url) /question/list (lists the questions) 

hmm. merci à tous ceux qui aident 🙂

Utilisez les URL pour spécifier vos objects, pas vos actions:

Notez que ce que vous avez mentionné en premier n’est pas RESTful:

 /questions/show/ 

Au lieu de cela, vous devez utiliser vos URL pour spécifier vos objects:

 /questions/ 

Ensuite, vous effectuez l’une des opérations ci-dessous sur cette ressource.


OBTENIR:

Utilisé pour obtenir une ressource, interroger une liste de ressources et également interroger des informations en lecture seule sur une ressource.

Pour obtenir une ressource de question:

 GET /questions/ HTTP/1.1 Host: whateverblahblah.com 

Pour lister toutes les ressources de la question:

 GET /questions HTTP/1.1 Host: whateverblahblah.com 

POSTER:

Utilisé pour créer une ressource.

Notez que ce qui suit est une erreur:

 POST /questions/ HTTP/1.1 Host: whateverblahblah.com 

Si l’URL n’est pas encore créée, vous ne devriez pas utiliser POST pour le créer en spécifiant le nom. Cela devrait entraîner une erreur de ressource introuvable car n’existe pas encore. Vous devez d’abord mettre la ressource sur le serveur. Vous pourriez faire valoir qu’en créant une nouvelle question, vous mettez également à jour la ressource / questions, car elle renverrait désormais une question de plus dans sa liste de questions.

Vous devriez faire quelque chose comme ça pour créer une ressource en utilisant POST:

 POST /questions HTTP/1.1 Host: whateverblahblah.com 

Notez que dans ce cas, le nom de la ressource n’est pas spécifié, le chemin de l’URL des nouveaux objects vous serait renvoyé.

EFFACER:

Utilisé pour supprimer la ressource.

 DELETE /questions/ HTTP/1.1 Host: whateverblahblah.com 

METTRE:

Utilisé pour créer une ressource ou l’écraser pendant que vous spécifiez l’URL des ressources.

Pour une nouvelle ressource:

 PUT /questions/ HTTP/1.1 Host: whateverblahblah.com 

Pour remplacer une ressource existante:

 PUT /questions/ HTTP/1.1 Host: whateverblahblah.com 

…Oui, ils sont pareils. PUT est souvent décrite comme la méthode «edit», car en remplaçant la ressource entière par une version légèrement modifiée, vous avez modifié les données que les clients obtiendront à la prochaine étape.


Utilisation de REST dans les formulaires HTML:

La spécification HTML5 définit GET et POST pour l’élément de formulaire .

L’atsortingbut de contenu de méthode est un atsortingbut énuméré avec les mots-clés et états suivants:

  • Le mot clé GET, mappé sur l’état GET, indique la méthode HTTP GET.
  • Le mot-clé POST, mappé sur l’état POST, indiquant la méthode HTTP POST.

Techniquement, la spécification HTTP ne vous limite pas uniquement à ces méthodes. Vous êtes techniquement libre d’append toutes les méthodes que vous voulez, mais en pratique, ce n’est pas une bonne idée. L’idée est que tout le monde sait que vous utilisez GET pour lire les données, de sorte qu’il y aura confusion si vous décidez d’utiliser READ. Cela dit…

PIÈCE:

C’est une méthode qui a été définie dans une RFC formelle. Il est conçu pour être utilisé lorsque vous souhaitez envoyer uniquement une modification partielle à une ressource, il sera utilisé comme PUT:

 PATCH /questions/ HTTP/1.1 Host: whateverblahblah.com 

La différence est que PUT doit envoyer la ressource entière, quelle que soit sa taille par rapport à ce qui a été modifié, tandis que PATCH vous permet d’envoyer uniquement les modifications.

En supposant /questions/10 est une question valable, la méthode est utilisée pour interagir avec elle.

POST pour y append

PUT pour le créer ou le remplacer

GET pour voir / interroger

et DELETE pour bien le supprimer.

L’URL ne change pas.

Je vais aller de l’avant et deviner que ce que vous voulez dire est ce que sont les contrôleurs standard pour MVC quand vous dites les URL “RESTful”, puisque vos exemples pourraient être considérés comme non “RESTful” (voir cet article).

Puisque Rails a vraiment popularisé le style d’URL qui vous intéresse, je propose ci-dessous les actions de contrôleur par défaut produites par ScaffoldingGenerator dans Ruby on Rails. Ceux-ci devraient être familiers à toute personne utilisant une application Rails.

Les actions et les vues échafaudées sont les suivantes: index, liste, affichage, nouveauté, création, modification, mise à jour, destruction

Généralement, vous construirez ceci comme:

 http://application.com/controller// 

Voici un mappage de vos URL actuelles en utilisant le principe REST:

 /question/show/ 

Si vous identifiez la question en tant que ressource, elle doit avoir une URL unique. Utiliser GET pour l’afficher (le récupérer) est la pratique courante. Il devient:

 GET /question/ 

 /question/edit/ 

Maintenant, vous voulez que votre utilisateur ait une autre vue de la même ressource lui permettant de modifier la ressource (peut-être avec des contrôles de formulaire).

Deux options ici, votre application est une application (pas un site Web), alors vous pouvez mieux utiliser JavaScript pour transformer la ressource en une ressource modifiable du côté client.

S’il s’agit d’un site Web, vous pouvez utiliser la même URL avec des informations supplémentaires pour spécifier une autre vue. La pratique courante semble être:

 GET /question/;edit 

 /question/update/ (this is the post back url) 

C’est pour changer la question, donc PUT est la bonne méthode à utiliser:

 PUT /question/ 

 /question/list (lists the questions) 

La liste de questions est en fait la ressource parente d’une question, donc c’est naturellement:

 GET /question 

Maintenant, vous pouvez avoir besoin de plus:

 POST /question (create a new question and returns its URL) DELETE /question/ (deletes a question if this is relevant) 

Tada 🙂

Vos quatre exemples pourraient être:

 GET /questions/123 POST (or PUT) /questions/123 q=What+is+the+meaning+of+life POST (or PUT) /questions/123 q=What+is+the+meaning+of+life GET /questions 

Pour append une question:

 POST /questions q=What+is+the+meaning+of+life 

Le serveur répondrait:

 200 OK (or 201 Created) Location: /questions/456