为啥 REST API 方法名称很重要?因为我可以使用这些方法中的任何一种来执行 CRUD 操作
Posted
技术标签:
【中文标题】为啥 REST API 方法名称很重要?因为我可以使用这些方法中的任何一种来执行 CRUD 操作【英文标题】:Why REST API method name important? Because I can use any of those method to perform CRUD operation为什么 REST API 方法名称很重要?因为我可以使用这些方法中的任何一种来执行 CRUD 操作 【发布时间】:2017-11-05 11:20:49 【问题描述】:在 REST 中,完整 API 有一些方法名称,例如(GET、PUT、POST 等),用于某些特定操作(CRUD) 但是我可以使用任何方法执行任何操作
数据库操作示例:
我可以使用 GET 创建或插入新文档或删除或更新 方法。
我可以使用 POST 方法发布或更新或删除。
我可以使用 PUT 方法删除或更新或删除。
我可以使用任何一种方法来执行 DB (CRUD) 操作
那么,为什么需要这个方法来指定我们何时调用任何 REST 完整 API?
【问题讨论】:
不清楚你在问什么。 如果你能做到,那显然说明服务器做得很差。在 REST 中,每个方法,即使发送到同一个 URL,都应该在服务器上触发不同的操作 阅读此处***.com/questions/107390/…,这是一个非常深奥的问题,基于了解您提出请求时发生的情况 @Nhor 你能向我解释为什么以及如何?这对我很有帮助 有点困惑为什么这被否决了。对我来说,这听起来像是一个诚实的问题,而且答案很好。 【参考方案1】:这是一个基于 HTTP 标准的约定。 REST 建立在约定优于配置范式之上。也就是说,一组约定避免了很多样板和配置。
例如,HTTP 1.1 standard 说:
GET
: GET 方法意味着检索由 Request-URI 标识的任何信息(以实体的形式)。如果 Request-URI 指的是数据生成过程,则生成的数据应作为响应中的实体返回,而不是过程的源文本,除非该文本恰好是过程的输出 em>
POST
:POST 方法用于请求源服务器接受请求中包含的实体作为请求行中的请求 URI 标识的资源的新下级 [ ...].
...等等。
【讨论】:
【参考方案2】:要扩展 Matías 的答案,您必须考虑允许消费者使用他们想要的任何动词调用您的 API 的后果。
首先,如果您永远不知道会发生什么操作,那么您的实现将会更加复杂。例如,如果有人可以使用 GET 更新资源,您如何区分查询和更新?答案是:实现的额外(不必要的)复杂性。
其次,从性能和可扩展性的角度来看会产生影响。 GET 允许轻松缓存资源表示,因为它具有幂等性——这是预期的约定。由于不明确哪些动词做什么,您会更难利用缓存等策略,这会使您的 API 更难扩展。
第三,它使消费者的事情变得更加复杂。 HTTP 的基于约定的方法被广泛理解。使用不遵循该约定的 API(尤其是自标为使用 HTTP/REST 的 API)会增加集成成本。
【讨论】:
以上是关于为啥 REST API 方法名称很重要?因为我可以使用这些方法中的任何一种来执行 CRUD 操作的主要内容,如果未能解决你的问题,请参考以下文章
为啥我从 google drive rest api 得到服务器回复被禁止?