HTTP方法以及为什么要在API上使用它们
我们每个人即使不知道,也曾经使用过HTTP协议。 否则,我不会在Medium上写过这篇文章,因此,您不会在阅读它。
在编写REST API时,应确保其使用标准的HTTP方法。 这些是构建稳定且非常重要的可扩展API的重要支柱。 GET , POST , PUT …我应该使用哪一个? 我的答案是:取决于您要做什么!
什么时候应该使用每种方法?
主要的HTTP动词或方法(如果您希望将其称为)是:
- 得到
- 开机自检
- 放置/修补
- 删除
您可能会像:
“嘿,谢谢,我对此一无所知! 但是……我什么时候应该使用它们中的每一个?”
让我向您解释它们(希望不要对此感到无聊)!
得到
如果您检查HTTP/1.1
协议的规范,它会说,我引用:
“ GET方法意味着检索Request-URI标识的任何信息(以实体的形式)。 如果Request-URI涉及数据产生过程,则应将产生的数据作为响应中的实体而不是过程的源文本作为实体返回,除非该文本恰好是过程的输出。” 。
简化这一点就是说应该使用GET动词(或方法)来检索您要查找的信息。 使用以下URL :
https://api-url.dev/api/v1/users/1
它应该检索有关ID为 1
的用户的所有可访问信息。
开机自检
让我们再次检查HTTP/1.1
协议的规范。 它说:
POST方法用于请求源服务器接受请求中包含的实体作为请求行中Request-URI标识的资源的新下属。 POST旨在允许采用统一的方法来覆盖以下功能:
-注释现有资源;
-将消息发布到公告板,新闻组,邮件列表,
或类似的文章;
-提供数据块,例如提交数据的结果
形式,到数据处理过程;
-通过附加操作扩展数据库。
嗯,这些话很多,都是说POST动词将信息存储在服务器上。
使用以下URL:
https://api-url.dev/api/v1/users
这应该用于创建新用户。 您可以使用将要发出的HTTP请求的正文来发送所有必需的信息(用户名,密码等)。
放置/修补
让我们再检查一次HTTP/1.1
协议。 PUT动词怎么说?
PUT方法请求将封闭的实体存储在提供的Request-URI下。 如果Request-URI引用了已经存在的资源,则应将封闭的实体视为驻留在原始服务器上的实体的修改版本。
换句话说,上面的文字告诉我们,我们应该使用PUT动词来更新现有资源,例如现有用户。
使用网址:
https://api-url.dev/api/v1/users/1
系统应使用请求中发送的信息更新ID为 1
有关用户的信息。
但是... PATCH动词呢?
对! PATCH动词。 例如,说您要更新ID为 1
的用户,就像上面的示例一样,但是您只想发送新更新的字段,比方说密码字段。 在这种情况下,应使用PATCH动词。 为什么? 因为您只是发送用户实体的一部分(在本示例中为密码),所以在对给定用户进行PATCH时 ,此动词就足够了。
删除
啊,最后但并非最不重要的: DELETE动词。 因此,最后一次检查规格(最终否?),我们得到以下信息:
DELETE方法请求原始服务器删除由Request-URI标识的资源。 在原始服务器上,人为干预(或其他方式)可能会覆盖此方法。 即使从原始服务器返回的状态代码指示该操作已成功完成,也不能保证客户机已执行了该操作。 但是,服务器不应指示成功,除非在给出响应时服务器打算删除资源或将其移动到无法访问的位置。
解释稍微混乱的文本时,它表示您每次要从服务器中删除某些资源时都应使用DELETE动词。
如果您对以下内容执行DELETE请求:
https://api-url.dev/api/v1/users/1
服务器应删除ID为 1
的用户,以及与该用户关联的所有资源。
就是这样! 我已经掩盖了本文开头所建议的所有内容。 希望您喜欢阅读,如果有任何疑问或建议需要改进,请告诉我。
干杯,
From: https://hackernoon.com/http-methods-and-why-you-should-be-using-them-on-your-api-98e26b0a7e57