在使用HATEOAS约束构建REST服务时,通过链接宣传存在的资源非常容易。您GET
以我的网站的根目录为基础,然后我以列出所有第一层资源的根目录文档进行响应:
{
users: { href: "/users" }
questions { href: "/questions" }
}
了解如何读取这些href
值的客户端可以对这些值执行GET
请求,并发现应用程序中所有可用的当前资源。
这对于基本的查找方案非常有效,但不能指示资源是否可查询。例如,执行以下操作可能是合理的:
GET /users?surname=Smith
是否有任何格式可以用足够的信息来表达此查询功能,以使客户端无需事先了解资源就可以形成连贯的查询?
另外,有什么方法可以表示允许客户端POST
对具有预期位置的给定位置执行操作。例如,可以期望客户执行以下操作来创建新的问题资源:
POST /questions
{
title: "Are there strategies for discovering REST services using HATEOAS?",
body: "When building a REST service with the HATEOAS constraint, it's very..."
}
当使用HTML作为人类消费的格式时,我们可以通过使用表格和书面提示来表达很多这种形式,以使人们能够发现他们被允许对服务执行的操作。
是否有能够为客户提供类似功能的格式?
2
关于REST服务的发现问题已在此处进行了讨论并得到了解答:stackoverflow.com/questions/9101494/…最简单的解决方案是将XHTML模板与一种形式一起使用,该模板不仅会告诉您可以使用的方法,而且还会告诉您通过表单元素(输入,选择等)发送的对象结构。客户端只需要具有XML解析器即可找到所需的内容。另一种方法是使用URL模板,但是它们只能帮助获取查询字符串的资源。
—
Spoike