3

我已经开始研究一个现有的 REST 应用程序,并且无法理解如何制作一个 RESTful 客户端?

维基百科上的页面声明如下

“客户端仅通过服务器在超媒体中动态识别的动作(例如通过超文本中的超链接)进行状态转换。除了应用程序的简单固定入口点外,客户端不假设任何特定动作可用于任何特定资源超出了先前从服务器收到的陈述中描述的资源。”

如果客户端只能假设一个起始 url,那么除了在浏览器中运行的纯 HTTP REST 服务之外,客户端如何知道如何显示返回的任何信息。

例如,java/flash 客户端必须假设返回什么数据才能知道如何显示它,然后当然实现将不再是宁静的?

感谢您的任何见解。

码头

4

1 回答 1

4

状态转换和告诉客户端如何显示信息是有区别的。在 HTTP 中,数据类型通常由Content-Type客户端决定如何显示它的头字段确定(例如,浏览器会请求text/html并呈现结果)。REST 没有假设数据是自我描述的,只是假设它们应该通过 URI 进行语义连接。application/jsonwiki 页面说明的是,如果您请求http://example.com它会返回如下内容:

{
    "users" : "http://example.com/users",
    "todos" : "http://example.com/todos"
}

现在您知道要请求什么 URI 来获取待办事项列表,并且请求http://example.com/todos可能会返回如下内容:

[
    {
        "description" : "Do dishes",
        "user" : "http://example.com/users/20"
    },
    {
        "description" : "Do dishes",
        "user" : "http://example.com/users/42"
    }
]

用户键不只是返回一个 id,而是引用连接的用户资源的实际 URI,因此您可以直接请求它。

于 2012-08-22T23:32:01.510 回答