仅使用GET和POST方法的RESTful服务

时间:2016-11-22 20:22:21

标签: node.js rest api

目前使用GET,POST,PUT,PATCH和DELETE实现RESTful服务 或者至少使用其中的4个。 (通常不使用方法PATCH。)

是否可以仅使用GET和POST实现RESTful API 使帖子表现为POST,PUT或DELETE,具体取决于在url或标头中传递的一些参数,或者正如该文章提到的那样做一个语义网址: /用户/删除 /用户/更新

我正在搜索类似的东西并发现那篇文章但它不是很完整且有点旧。 https://www.infoq.com/news/2010/06/get-post-alone-restful

我知道在某些Web框架(如Django)中,它们只允许POST和GET方法,但我认为这是出于兼容性原因而发生的,与之前版本的框架有关。

一方面,菲尔丁谈论宁静的服务,唯一的限制是关于语义,但使用上面的例子,我们有一个sematic使用确定。 POST或PUT或DELETE之间没有歧义。

1 个答案:

答案 0 :(得分:2)

是的,这是可能的,甚至经常在某些特定用例的实践中完成 - 例如,因为您只能在HTML表单中使用GET和POST,或者当您需要“PATCH”但不支持时由您需要合作的客户。

如果使用Express,则有方法覆盖模块:

可让您拥有一个HTML表单,如:

<form method="POST" action="/resource?_method=DELETE">
  <button type="submit">Delete resource</button>
</form>

会删除资源而不是发布资源。

方法覆盖通常使用上面的“_method”之类的查询参数或者像“X-HTTP-Method-Override”这样的特殊标题来完成,可以设置为“DELETE”或“PATCH”或任何你想要的。