我喜欢RESTful的简单性以及它如何避免像SOAP这样的普通"企业"系统,或DCOM和RPC的二进制硬度.
但REST似乎比更抽象的服务更适合数据库实体.我想知道你是否可以告诉我你如何做这些情况:
例如,假设我有一个用于普通数据库系统的RESTful Web服务(例如,乳品购物网站),所以我有/ products/eggs/battery和/ products/milk/skimmed
通过对/ products/eggs进行POST来实现INSERT.
但你怎么做一个"清除所有"命令?DELETE动词仅适用于单个实体.而"DELETE/products/milk"意味着删除"牛奶"产品类别本身,而不仅仅是牛奶类别中的所有产品.如果你想完成两件事怎么办?
我遇到的另一个问题涉及与实体无关的Web服务操作.例如,如果我正在为密码数据库设计一个Web服务,我会有"GET /passwords/stackoverflow.com"之类的操作,这很好,但我也有操作在入侵的情况下禁用该网站检测.在"旧学校"网络服务模式下,我有一个名为"disableWebsite"的方法,但是我不能创建一个名为"DISABLE"的HTTP动词和一个名为"/ website"的资源(所以请求将是" DISABLE /网站").这里有什么解决方案?
最后,如何将HTML表单与RESTful协调?Web表单只能使用查询字符串或POST进行GET请求.如果我有搜索表单,我希望它请求"/ products/search/{query}",但现在请求看起来像"/ products/search?query = {query}".
rest ×1