HATEOAS书签网址访问

时间:2015-06-11 04:07:32

标签: hateoas

我正试图绕过HATEOAS。

让我们通过一个例子。客户端将浏览器加载到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?

1 个答案:

答案 0 :(得分:3)

你的问题是你不是真正的RESTful。暴露像id字段这样的内部工作是你应该避免的陷阱。该ID仅在您的服务中有意义,它不应该像您一样在其之外传播。

而是使用每个资源的自我链接,因此当您请求“电子邮件”关系时,您应该返回一个电子邮件资源(可能是)

src

在SPA的片段标识符中使用该自我URL。现在,当用户为完整网址{ "subject" : "subject something", "text" : "yadda yadda yadda...", "from" : "here@there.com", _links:{ "self":"http://getemails.com/emaildetail/1" } } (带有一些网址编码)书签时,您的应用会知道要检索和呈现的资源。