【发布时间】:2011-06-22 00:14:26
【问题描述】:
我喜欢 RESTful,因为它的简单性以及它如何避免像 SOAP 这样的普通“企业”系统的麻烦,或者 DCOM 和 RPC 的二进制硬度。
但是 REST 似乎比更抽象的服务更适合数据库实体。我想知道您是否可以就如何处理这些情况给我建议:
例如,假设我有一个用于普通数据库系统(例如,乳制品购物网站)的 RESTful Web 服务,那么我将拥有 /products/eggs/battery 和 /products/milk/skimmed
执行 INSERT 可以通过向 /products/eggs 发布 POST 来实现。
但是您将如何执行“全部清除”命令? DELETE 动词仅适用于单个实体。 “DELETE /products/milk”意味着删除“牛奶”产品类别本身,而不仅仅是牛奶类别中的所有产品。如果你想同时实现这两个呢?
我的另一个问题与与实体无关的 Web 服务操作有关。例如,如果我正在为密码数据库设计一个 Web 服务,我会执行诸如“GET /passwords/stackoverflow.com”之类的操作,这很好,但我也会有操作来禁用网站以防入侵检测。在“老派”网络服务模型下,我有一个简单命名为“disableWebsite”的方法,但是我无法创建一个名为“DISABLE”的 HTTP 动词和一个名为“/website”的资源(因此请求将是“禁用/网站”)。这里有什么解决办法?
最后,如何协调 HTML 表单和 RESTful? Web 表单只能使用查询字符串或 POST 发出 GET 请求。如果我有一个搜索表单,我希望它请求“/products/search/{query}”,但现在请求看起来像“/products/search?query={query}”。
【问题讨论】:
标签: rest