Les verbes HTTP sont probablement l'une des choses les plus cryptiques du protocole HTTP. Ils existent, et il y en a beaucoup, mais pourquoi existent-ils?
Rails semble vouloir prendre en charge de nombreux verbes et ajouter des verbes qui ne sont pas pris en charge par les navigateurs Web de manière native.
Voici une liste exhaustive des verbes http: http://annevankesteren.nl/2007/10/http-methods
Là, le correctif HTTP de la RFC officielle: https://datatracker.ietf.org/doc/rfc5789/?include_text=1
La méthode PATCH demande qu'un ensemble de changements décrits dans l'entité de demande soit appliqué à la ressource identifiée par l'URI de demande. L'ensemble des modifications est représenté dans un format appelé «document de patch» identifié par un type de support. Si Request-URI ne pointe pas vers une ressource existante, le serveur PEUT créer une nouvelle ressource, en fonction du type de document de correctif (s'il peut logiquement modifier une ressource nulle) et des autorisations, etc.
La différence entre les demandes PUT et PATCH se reflète dans la manière dont le serveur traite l'entité incluse pour modifier la ressource identifiée par l'URI de demande. Dans une demande PUT , l'entité incluse est considérée comme une version modifiée de la ressource stockée sur le serveur d'origine, et le client demande que la version stockée soit remplacée. Avec PATCH , cependant, l'entité incluse contient un ensemble d'instructions décrivant comment une ressource résidant actuellement sur le serveur d'origine doit être modifiée pour produire une nouvelle version. La
méthode PATCH affecte la ressource identifiée par Request-URI , et elle PEUT également
avoir des effets secondaires sur d'autres ressources; c'est-à-dire que de nouvelles ressources peuvent être créées, ou des ressources existantes modifiées, par l'application d'un PATCH .
Autant que je sache, le verbe PATCH n'est pas utilisé tel qu'il est dans les applications rails ... Si je comprends bien, le verbe correctif RFC devrait être utilisé pour envoyer des instructions de correctif comme lorsque vous effectuez une différence entre deux fichiers. Au lieu d'envoyer à nouveau l'entité entière, vous envoyez un correctif qui pourrait être beaucoup plus petit que de renvoyer l'entité entière.
Imaginez que vous vouliez éditer un gros fichier. Vous modifiez 3 lignes. Au lieu de renvoyer le fichier, il vous suffit d'envoyer le diff. Du côté positif, l'envoi d'une demande de correctif pourrait être utilisé pour fusionner des fichiers de manière asynchrone. Un système de contrôle de version pourrait potentiellement utiliser le verbe PATCH pour mettre à jour le code à distance.
Un autre cas d'utilisation possible est quelque peu lié aux bases de données NoSQL, il est possible de stocker des documents. Supposons que nous utilisions une structure JSON pour envoyer des données entre le serveur et le client. Si nous voulions supprimer un champ, nous pourrions utiliser une syntaxe similaire à celle de mongodb pour $ unset . En fait, la méthode utilisée dans mongodb pour mettre à jour des documents pourrait probablement être utilisée pour gérer les correctifs json.
Prenant cet exemple:
db.products.update(
{ sku: "unknown" },
{ $unset: { quantity: "", instock: "" } }
)
Nous pourrions avoir quelque chose comme ça:
PATCH /products?sku=unknown
{ "$unset": { "quantity": "", "instock": "" } }
Dernier point, mais non le moindre, les gens peuvent dire ce qu'ils veulent sur les verbes HTTP. Il n'y a qu'une seule vérité, et la vérité est dans les RFC.
J'ai passé quelques heures avec Google et j'ai trouvé la réponse ici
PUT => Si l'utilisateur peut mettre à jour tout ou juste une partie de l'enregistrement , utilisez PUT (l'utilisateur contrôle ce qui est mis à jour)
PATCH => Si l'utilisateur ne peut mettre à jour qu'un enregistrement partiel , disons simplement une adresse e-mail (l'application contrôle ce qui peut être mis à jour), utilisez PATCH.
Pourquoi
Patch
PUT
La méthode nécessite plus de bande passante ou gère des ressources complètes à la place sur partielle. Ainsi aPATCH
été introduit pour réduire la bande passante.Explication sur PATCH
PATCH
est une méthode qui n'est ni sûre, ni idempotente, et permet des mises à jour complètes et partielles et des effets secondaires sur d'autres ressources.PATCH
est une méthode dont l'entité incluse contient un ensemble d'instructions décrivant comment une ressource résidant actuellement sur le serveur d'origine doit être modifiée pour produire une nouvelle version.Ici plus d'informations sur put et patch
la source
PATCH
parmiPOST
,PUT
etc. n'est pas «sûr», car il modifie vos données (a des effets secondaires). Comparé àGET
,OPTIONS
etc. (méthodes sûres) où vous pouvez appeler les points de terminaison plusieurs fois sans aucun effet secondaire.mettre
si je veux changer mon
first
nom , puis envoyer mettre demande de mise à jourmais ici, il y a un problème est
put
que lorsque je veux envoyer uneput
demande, je dois envoyer les deux paramètres qui sontfirst
etlast
il est donc obligatoire d'envoyer à nouveau toute la valeur
patch :
patch
demande dit. n'envoyezdata
que celui que vous voulezupdate
et cela n'affectera ni ne modifiera les autres données.donc pas besoin d'envoyer à nouveau toute la valeur. juste je veux mettre à jour mon prénom donc je dois envoyer seulement le
first
nom pour mettre à jour.la source
Voici la différence entre les méthodes POST, PUT et PATCH d'un protocole HTTP.
PUBLIER
Une méthode HTTP.POST crée toujours une nouvelle ressource sur le serveur. C'est une demande non idempotente, c'est-à-dire que si l'utilisateur rencontre les mêmes demandes 2 fois, il créerait une autre nouvelle ressource s'il n'y a pas de contrainte.
La méthode de publication http est comme une requête INSERT dans SQL qui crée toujours un nouvel enregistrement dans la base de données.
Exemple: Utilisez la méthode POST pour enregistrer un nouvel utilisateur, une commande, etc. où le serveur principal décide de l'ID de ressource pour la nouvelle ressource.
METTRE
Dans la méthode HTTP.PUT, la ressource est d'abord identifiée à partir de l'URL et si elle existe, elle est mise à jour, sinon une nouvelle ressource est créée. Lorsque la ressource cible existe, elle remplace cette ressource par un nouveau corps complet. C'est la méthode HTTP.PUT est utilisée pour CRÉER ou METTRE À JOUR une ressource.
La méthode http put est comme une requête MERGE dans SQL qui insère ou met à jour un enregistrement selon que l'enregistrement donné existe.
La requête PUT est idempotente, c'est-à-dire que frapper deux fois les mêmes requêtes mettrait à jour l'enregistrement existant (aucun nouvel enregistrement créé). Dans la méthode PUT, l'ID de la ressource est décidé par le client et fourni dans l'url de la demande.
Exemple: utilisez la méthode PUT pour mettre à jour l'utilisateur ou la commande existant.
PIÈCE
Une méthode HTTP.PATCH est utilisée pour les modifications partielles d'une ressource, c'est-à-dire les mises à jour delta.
La méthode de correctif http est comme une requête UPDATE dans SQL qui définit ou met à jour les colonnes sélectionnées uniquement et non la ligne entière.
Exemple: vous pouvez utiliser la méthode PATCH pour mettre à jour le statut de la commande.
PATCH / api / users / 40450236 / commande / 10234557
Corps de la demande: {status: 'Delivered'}
la source
Il existe des limitations dans PUT over PATCH lors des mises à jour. L'utilisation de PUT nous oblige à spécifier tous les attributs même si nous ne voulons changer qu'un seul attribut. Mais si nous utilisons la méthode PATCH, nous ne pouvons mettre à jour que les champs dont nous avons besoin et il n'est pas nécessaire de mentionner tous les champs. PATCH ne nous permet pas de modifier une valeur dans un tableau, ni de supprimer un attribut ou une entrée de tableau.
la source
PUT et PATCH méthodes sont de nature similaire, mais il existe une différence essentielle.
PUT - dans PUT demande , l'entité incluse serait considérée comme la version modifiée d'une ressource résidant sur le serveur et elle serait remplacée par cette entité modifiée.
PATCH - dans la demande PATCH , l'entité incluse contient l'ensemble d'instructions indiquant comment l'entité résidant sur le serveur serait modifiée pour produire une version plus récente.
la source
Selon les termes HTTP, la
PUT
requête ressemble à une instruction de mise à jour de base de données.PUT
- est utilisé pour modifier la ressource existante (précédemment POSTED). D'autre part, laPATCH
demande est utilisée pour mettre à jour une partie de la ressource existante.Par exemple:
Détails du client:
Quand nous voulons mettre à jour l'enregistrement entier? nous devons utiliser
Http
PUT
verb
pour cela.tel que:
D'autre part, si nous voulons mettre à jour uniquement la partie de l'enregistrement et non l'intégralité de l'enregistrement, optez pour
Http
PATCH
verb
. tel que:PUT VS POST:
Lors de l'utilisation de la
PUT
demande, nous devons envoyer tous les paramètres tels que firstName, lastName, email, phoneNumber Where as Inpatch
request uniquement envoyer les paramètres que nous voulons mettre à jour et cela n'affectera ni ne modifiera les autres données.Pour plus de détails, veuillez visiter: https://fullstack-developer.academy/restful-api-design-post-vs-put-vs-patch/
la source
Les méthodes Put et Patch sont similaires. Mais dans les rails, il a une méthode différente. Si nous voulons mettre à jour / remplacer tout l'enregistrement, nous devons utiliser la méthode Put. Si nous voulons mettre à jour un enregistrement particulier, utilisez la méthode Patch.
la source