我是REST新手,很可能正在推动/越过限制......
假设我们有典型的订单示例:
GET /Order/12345
现在我想发布一个反射资源来描述属性,方法,关系方面的“订单”类型。
GET /Reflection/Type/Order
除其他外,回复可以包含“Order”类型方法“foo”的反射对象表示的URI
/Reflection/Type/Order/Method/foo
接下来我们可以POST到该URI以使用/ call / post-to方法...如果方法需要参数,它们将在正文中传递。
POST /Reflection/Type/Order/Method/foo
我的推理:
我现在倾向于拥有一个事务队列并在那里发布一个事务......
POST /TransactionQueue
正文将包含表示方法foo(/ Reflection / Method / foo)的反射资源的URI,任何对象资源的URI和非对象参数的正常值。
问题:这种解释是否可以容忍,或者是否以最糟糕的方式违反了REST风格?
如果以上是假的,我需要一些关于RESTful接口的提示:
更新:关于HATEOAS的This非常有趣......
更新:寻找Burton Group的Peter Lacey的RestEasy powerpoint
更新:播客http://www.udidahan.com/2008/03/16/podcast-rest-messaging-enterprise-solutions/
更新:预订“Restful web services cookbook”
更新:预订“实践中的休息”
答案 0 :(得分:0)
这种设计不会导致非常Restful的系统,它不提供统一的界面。实际上,对“在对象上执行方法的方法”本身的所述要求违反了为客户端提供统一接口的概念。您当然会在幕后对象上执行方法,但是将该模型推送到交互层会违反为客户提供统一接口的原则。
所有交互都应采用GET,PUT,DELETE和POST资源的形式。
正如您所发现的那样,超文本非常重要,用于在获取资源后通知客户端相应的后续选择。有许多格式可以帮助您描述您要查找的关系类型,例如尝试使用RDFa。
答案 1 :(得分:0)
慢慢与HATEOAS一起到达那里:
特别启发: