Web services 建模a";方法“;作为反射资源违反REST样式?

Web services 建模a";方法“;作为反射资源违反REST样式?,web-services,http,rest,Web Services,Http,Rest,我刚开始休息,很可能正在突破极限 假设我们有一个典型的订单示例: GET /Order/12345 现在,我想发布一个反射资源来描述属性、方法和关系方面的“顺序”类型 GET /Reflection/Type/Order 其中,回复可以包含表示“Order”类型的方法“foo”的反射对象的URI 接下来,我们可以发布到该URI以使用/call/POST到该方法。。。如果方法需要参数,它们将在主体中传递 POST /Reflection/Type/Order/Method/foo 我的理由是

我刚开始休息,很可能正在突破极限

假设我们有一个典型的订单示例:

GET /Order/12345
现在,我想发布一个反射资源来描述属性、方法和关系方面的“顺序”类型

GET /Reflection/Type/Order
其中,回复可以包含表示“Order”类型的方法“foo”的反射对象的URI

接下来,我们可以发布到该URI以使用/call/POST到该方法。。。如果方法需要参数,它们将在主体中传递

POST /Reflection/Type/Order/Method/foo
我的理由是:

  • 查看中的对象/概念/事物 作为资源的反射层
  • “类型”、“方法”是名词

  • “foo”是一个id这种设计不会产生一个非常Restful的系统,它没有提供统一的接口。事实上,“在对象上执行方法的方法”的规定本身违反了为客户机提供统一接口的概念。当然,您将在幕后对对象执行方法,但将该模型推到交互层违反了为客户端提供统一接口的原则

    所有交互都应该以获取、放置、删除和发布资源的形式进行


    正如您所发现的,超文本对于在客户端获取资源后通知其适当的后续选择非常重要。有许多格式可以帮助您描述您正在寻找的关系类型,例如,尝试RDFa。

    使用HATEOAS慢慢实现:

    • 网络已经是RESTful的了
    • 您只需要一个入口点URL
    • IMHO URL应与资源/名词相对应。有一个酷的、不透明的、看起来毫无用处的URL是很好的,它不会透露任何语义。此外,客户端被迫通过超链接的形式化描述来解释超链接的语义,而不是解释URL本身
    • 超链接的语义用(标准化的)形式化描述表示。这是超链接的语言,也是客户需要知道的唯一语言。例如RDF、Atom等
    • 只需将客户端视为只知道(自定义)链接类型和媒体类型的专用浏览器即可
    • 客户端除了在响应中接收到以下链接外,无法执行任何操作。它本身不构造任何URL
    特别有启发性的是:

    • “如何喝杯咖啡”及其评论

    我觉得你的推理很合理,但我不是休息专家。是的,但它一直困扰着我,警钟也在响。。。我现在正在研究HATEOAS()以及它是否/如何与我的问题相关联:-)
    POST /Reflection/Type/Order/Method/foo
    
    POST /TransactionQueue