为什么REST API方法名称很重要?因为我可以使用任何这些方法来执行CRUD操作

时间:2017-06-04 16:19:05

标签: rest

在REST中,完整的API有一些方法名称,如(GET,PUT,POST等),用于某些特定操作(CRUD) 但我可以使用任何方法执行任何操作

数据库操作示例:

  1. 我可以使用GET创建或插入新文档或删除或更新  方法

  2. 我可以使用POST方法发布,更新或删除。

  3. 我可以使用PUT方法删除,更新或删除。

    与我可以使用任何此方法执行DB(CRUD)操作的方式相同

  4. 那么,为什么需要这种方法来指定何时调用任何其他完整的API?

2 个答案:

答案 0 :(得分:5)

这是基于HTTP标准的约定。 REST建立在约定优于配置范例之上。也就是说,一组约定避免了大量的样板和配置。

例如,HTTP 1.1 standard说:

  • GET GET方法意味着检索Request-URI标识的任何信息(以实体的形式)。如果Request-URI引用数据生成过程,则生成的数据应作为响应中的实体而不是过程的源文本返回,除非该文本恰好是过程的输出

  • POST POST方法用于请求源服务器接受请求中包含的实体,作为请求中Request-URI标识的资源的新下级 - 行[...]

......等等。

答案 1 :(得分:0)

要扩展Matías的答案,您必须考虑允许消费者使用他们想要的任何动词来调用您的API的后果。

首先,如果你永远不知道预期会有什么操作,那么你的实现会更复杂。例如,如果有人可以使用GET更新资源,您如何区分查询和更新?答案:实施的额外(不必要)复杂性。

其次,从性能和可扩展性的角度来看会产生影响。 GET允许轻松缓存资源表示,因为它具有幂等性 - 这是预期的约定。通过不明确哪些动词做了什么,你就越难以利用缓存等策略,这会使你的API难以扩展。

第三,它使消费者的事情变得更加复杂。 HTTP的基于约定的方法被广泛理解。使用不符合该约定的API - 尤其是使用HTTP / REST标记自身的API - 会增加集成成本。