这个问题有点长,请忍受。
在REST中,我认为我们不需要WADL或任何IDL。但是,有些东西会隐含地涵盖其概念。我考虑的方式是当我们(人类)浏览Web时,当我们第一次访问网站时,我们不知道它提供了什么服务。您可以在html主页(或“帮助”部分中的站点地图页面)上找到这些内容,或者仅在主页上的主菜单上找到它们。如果您进行类比,那么对我们人类的主页或站点地图就是WSDL对WS- *的含义,或者WADL对REST服务的含义。只是它就像其他任何html内容一样。
我认为在REST中,遵循HATEOS范式,以下是做事的好方法。有一个顶级(或默认)资源,该资源列出了指向您其他资源的链接。对于一个库示例,说RestLibrary.com/可能是这样的:

<root xmlns:lib="http://librarystandards.com/libraryml">
<resource class="lib:book">
  <link type="application/vnd.libraryml+xml" template="mylib.com/book/{isbn}" />
  <link type="application/vnd.libraryml+xml" rel="add" href="mylib.com/book" method="POST" />
  <link type="application/vnd.libraryml+xml" rel="update" template="mylib.com/book/{isbn}" method="PUT" />
</resource>
<resource class="lib:bookList">
  <link template="mylib.com/book?keywords={keywords}" type="application/vnd.openlibrary+xml" rel="search" />
</resource>
</root>

注意,假定媒体类型“application/vnd.libraryml + xml”是已定义的标准,或者是(可能只是专有词汇)名为libraryml。同样,客户端应该能够理解该“主页”资源(元素根,资源和链接)。这是代替WADL可以使用的部分:任何客户都应该可以理解的抽象词汇。您可以使用现有的标准,例如Atom。但是主要思想是使任何客户都可以理解抽象词汇。那么为什么不使用WADL? wadl仅用于服务发现。这里的想法是要有一个简短的抽象词汇表,作为超媒体的基础。 “根”词汇。就像在猫头鹰中一样,我们也有owl:thing ... etc
现在,如果客户端知道“libraryml”标准,则可以跟踪指向其了解的内容的链接(在解析媒体类型属性和xmlns之后)。如果没有,那就不会了。

当我不明白如何处理REST体系结构中的某些内容时,我会倾向于看人类如何在Web中进行处理。在Web中,我们拥有HTML的通用语言,它使网站 build 者可以传递任何特定的内容,而不论其对客户端(用户)的含义如何,浏览器都可以理解HTML,但不能理解其内容的“含义”。是用户了解(特定于域的)内容。如果我要说QuantumPhysics.org,我的浏览器可以呈现主页(毕竟只是html),我可以阅读主页。如果我了解量子,那么我可以继续浏览。如果我不这样做,我就出去(除非我想学习困难的方法:))
  • 在RetsLibrary.com示例中
    客户端应用就像我+我的浏览器
  • QuantumPhysics.org上的
  • 。媒体类型
    “application/vnd.libraryml + xml”是
    量子物理学(知识)。
  • 在两个示例中,
  • http均为http。
  • 现在,QuantumPhysics.org的HTML在
    RestLibrary.com是XML +那么小
    小抽象词汇(根
    资源和链接,您可以
    替换为Atom之类的东西)。

  • 那么这种方法有什么值(value)呢?我们是否不需要根微小的 super 词汇,以便我们可以通过超媒体和“初始URI”概念获得成功?

    编辑
    是的,为什么不将RDF作为基本词汇!

    最佳答案

    是的,我肯定会看到这种媒体类型的需求。

    前几天,我们在freenode IRC REST channel 上讨论了这种确切的类型,这是在Mike Kelly建议使用“Hypermedia Application Language” application/hal + xml之后提出的。

    有关示例,请参见http://restafari.blogspot.com/2010/06/please-accept-applicationhalxml.html

    RDF似乎对这种类型的东西是过大的,但是我很高兴被证明是错误的。我发现RDF比HATEOAS更关注链接数据。

    关于rest - 在REST上: WADL or not IDL,是以下方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3014016/

    10-10 22:19