我正试着把我的头转到哈特奥。
让我们来看看一个例子。客户端将浏览器加载到getemails.com。简单地说,让我们假设对getemails.com的调用击中了服务器,并返回了一个电子邮件列表。每封电子邮件都有一个链接,可以让用户获得更多的细节。就像这样:
{[
{
"id": "1",
"subject" : "subject something",
_links:[
"email":"http://getemails.com/emaildetail/1"
]
}
{
"id": "2",
"subject" : "subject something else",
_links:[
"email":"http://getemails.com/emaildetail/2"
]
}
]}这将显示给表上的用户。然后,用户单击一行,客户端代码将从选定行的_links下获取电子邮件url,并对服务器进行调用。然后,它将使用电子邮件详细信息更新页面(假设为SPA)。它还将把地址更新到getemails.com/#email/1
现在,如果用户书签getemails.com/#email/1位置怎么办?既然客户端应用程序还没有加载邮件列表,它怎么知道调用服务器以获取更多信息的url是emaildetail/1呢?
发布于 2015-06-17 18:21:18
你的问题是你不是真正的RESTful。像id字段一样公开内部工作是你应该避免的陷阱。该ID仅在服务中有意义,不应像您所做的那样在服务之外传播。
相反,使用一个指向每个资源的自链接,所以当您请求“电子邮件”关系时,您应该得到一个电子邮件资源(想必)。
{
"subject" : "subject something",
"text" : "yadda yadda yadda...",
"from" : "here@there.com",
_links:{
"self":"http://getemails.com/emaildetail/1"
}
}在SPA的片段标识符中使用该自url。现在,当用户书签这个完整的url getemails.com/#http://getemails.com/emaildetail/1 (使用一些URL编码)时,您的应用程序将知道要检索和显示什么资源。
https://stackoverflow.com/questions/30771399
复制相似问题