17611538698
webmaster@21cto.com

为什么有些工程师无法解释 POST 和 PUT 间的区别?

编程语言 0 490 2024-06-17 06:41:38

图片

简介

“你好,你们这里能修电脑吗?”
ABC:“没有。”
“嗯嗯,请问我应该用什么方法来改用户名?”
A:"请使用 POST"
B: "请使用 PUT"
C:"请使用 PATCH"
"太好了,带上A一起去吧。”
“嗯,好的”

那么,你是那种会被带走的程序员吗?

我最近就成为一个无法正确解释“POST”、“PUT”和“PATCH”的工程师。

由于众所周知的原因我一直在使用这些方法,偶然间,我特别想知道 POST 还是 PUT 更适合当前的 API,后来我仔细琢磨了一下,弄清楚了其中的区别。

这次,我将介绍三种方法间的区别,这三种方法的用法其实令人惊讶。

为什么 POST/PUT/PATCH 不明确?

为什么这么多人首先混合使用 POST、PUT 和 PATCH?

  • PUT 和 PATCH 都用于更新

  • 每种方法的使用可能会因框架或 API 设计而异(例如,某些 API 允许使用 PUT 进行一部分更新)

  • 从学习的早期阶段就介绍了方法,因此很容易进行,不会有歧义。


我想可以给大家三样东西:

POST 和 PUT 之间的区别


首先我用通俗易懂的方式解释一下POST和PUT(PATCH)的区别。


如果你读过 Zalando RESTful API,它对 REST API 的介绍相当全面,因此我在这里引用一下:


POST 对集合节点意味着:“请将对象添加到由 URL 标识的资源集合中。”

PUT 的意思是“用该对象替换 URL 表示的现有资源”

如果你能理解到以上这一点,请继续下一步,但我个人觉得它有点难以形象化,所以我会在下一步中解释它。

例如,在使用POST的情况下,路径设计如下:

# POST/v1/user

使用 PUT 时:


# PUT/v1/users/12345

换句话说,添加用户本身时使用POST方法,更新用户(ID为12345)的元素,

例如,改名字时使用PUT。



图片

PUT 和 PATCH 之间的区别

PATCH 的意思是“请更改与此更改请求对应的 URL 标识的资源”

换句话说,PATCH是一个改变所有资源的请求,如果该资源不存在,就会创建一个新的。

# PUTcurl -XPUT /v1/users/12345 -d '{ "age": 31 }

对于 PUT,假设有用户(ID:12345),则将用户年龄更新为 31 岁。


# PATCHcurl -XPUT /v1/users/12345 -d '{ "name": "mina", "age": 31, "email": "xigua@ac.cn" }

在PATCH的情况下,如果有用户(ID:12345),则会立即更新。

例如有用户(姓名:mina,年龄:30,电子邮件:xigua@ac.cn),则仅更新年龄。叫 mina 的用户会立即更新,但似乎只有年龄字段更新。

如果用户(12345)不存在,则会添加一个新用户(如使用POST)。

结语

让我十分惊讶的是,有很多人都无法正确地解释POST和PUT的区分,即使是已经做了多年研发工程师的人。

因为直到我写完这篇文章时,当我被要求以模糊的方式来解释事情时,我也都无法做到。

当你想成为一名强大的工程师,掌握这些基础知识至关重要。

如果读到有关这一时期的内容,你也可以问问同事一些问题。

如果您已经读到这里,请点赞并收藏。如果您能关注@21CTO,我们也非常高兴。

明天的文章再见!


作者:万能的大雄

评论