我们正在设计一个RESTful API,以打开客户的帐户信息。我们的表示形式包含对与当前资源相关的其他资源的引用。这来自我们在公共API和已发布的资料中可以找到的许多最佳实践。表示形式可以是XML或JSON。
例如,对于帐户资源,我们将引用该帐户的地址,对于分页列表资源,我们将引用第一,下一页和上一页。
该API首先使用<link title="" rel="" href="" />
O'Reilly书中所述的语义链接进行设计,并由Netflix和Google在API中使用。当我们的质量检查工程师编写自动化套件时,他们在反序列化链接时遇到了问题。现在,我们建议使用更简单的uri字符串元素,这些元素已在Facebook和Twitter中用于API。
此后,我们的质量检查工程师已经解决了其反序列化问题,但是我仍然担心当前API规范与语义链接的易用性。我们的API主要将由我们的客户和一些第三方合作伙伴使用,而我们之所以选择REST,是因为以前的XML-RPC API对我们的消费者来说太难了。
tl; dr;
题:
实施了语义链接表示的任何人都遇到过困难的消费者问题吗?
更新(6/21):我已经决定保留语义链接,并希望混淆是一个边缘案例。一旦一些消费者使用了该API,我将尽量记住用我们的经验来回答这个问题。
编辑:添加示例
语义帐户JSON:
{
"username": "paul",
"links": [
{
"title": "addresses",
"rel": "related",
"href": "http://example.com/account/paul/addresses"
},
{
"title": "history",
"rel": "related",
"href": "http://example.com/account/paul/history"
}
]
}
语义帐户XML:
<account>
<username>paul</username>
<link title="addresses" rel="related" href="http://example.com/account/paul/addresses" />
<link title="history" rel="related" href="http://example.com/account/paul/history" />
</account>
简单帐户JSON:
{
"username": "paul",
"addresses": "http://example.com/account/paul/addresses"
"history": "http://example.com/account/paul/history"
}
简单帐户XML:
<account>
<username>paul</username>
<addresses>http://example.com/account/paul/addresses</addresses>
<history>http://example.com/account/paul/history</history>
</account>