2012-11-14 32 views
16

我刚刚开始为我目前正在构建的WebAPI编写客户端实现。 API已经使用HATEOAS,所以我正在写客户端。我使用RestSharp作为客户端的基础。HATEOAS Rel - 任何标准呢?

客户端在建设时通过api基础url(“https://myapi/start”),它在此处发出请求,然后通过一组uris访问其他可用资源 - 授权(“https://myapi/authorize”)并请求访问令牌“https://myapi/tokens”)授权它调用api上的安全资源。

的问题是有没有什么标准制定的又为相对=“”在返回的超媒体的要求?

回答

4

这IETF提出的标准RFC5988 document介绍了不同类型的链接关系,并提出用途。它的焦点在于HTTP链接头部规范,但它包括对其他链接关系类型的讨论。像一些(大多数?)RFC一样,阅读它可能会让你比开始时更困惑,但它的长期价值是值得的。它会回答你在问题中的双引号之间的内容吗?可能不会,但至少你会有一些想法来指导你的选择。

+0

我尽量避免RFC;)只是在开玩笑,尽管我很高兴我不是唯一一个总是带着更多问题而不是答案的人。 – Jammer

2

HAL似乎很INT真的很惊人。

为别人寻找到这个话题或HATEOAS的HAL浏览器是必须的。看看下面的链接:

The Hal Browser on Heroku

8

Web Linking spec, RFC5988,如已在另一个答案已经指出,定义了一些不同类型的链接关系的。但它也指示IANA创建链接关系注册表并允许进一步链接关系注册。该注册表是公共链接关系的确切列表,可在iana.org/assignments/link-relations并且将在注册新关系时更新。

在HTTP API的

常用关系包括:

  • start从集合(从每一个资源回API起点站)
  • item(指向一个项目,例如从Twitter用户页面到鸣叫)
  • collection(的item反向)
  • previous(这些接下来的四个是分页资源,例如收藏还是多页的文章)
  • next
  • first
  • last
  • create-form(一个描述如何创建新的收藏项目,例如“新项目” HTML或XForms表单的资源点从集合)
  • edit-form(点从一个形式的项用于编辑该项目,例如一个编辑资料Tweet按钮)

如果您希望的关系是而不是被该列表上的任何内容所覆盖,您的关系必须是URI。此外,建议将URI设为可控的域中的可忽略http URL,以便API客户端可以查找该关系的文档,例如, “HTTP://www.example.com/link-relations#tweets”。通常,您的API起始点将是一个集合列表,每个集合都有一个自定义链接关系,用于描述每个集合包含的资源类型。