在REST中,完整的API有一些方法名称,如(GET,PUT,POST等),用于某些特定操作(CRUD) 但我可以使用任何方法执行任何操作
数据库操作示例:
我可以使用GET创建或插入新文档或删除或更新 方法
我可以使用POST方法发布,更新或删除。
我可以使用PUT方法删除,更新或删除。
与我可以使用任何此方法执行DB(CRUD)操作的方式相同
那么,为什么需要这种方法来指定何时调用任何其他完整的API?
答案 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 - 会增加集成成本。