我如何描述HAL中的帖子链接?
我正在设计一个带有HATEOAS约束的RESTful API,类似于Wikipedia的HATEOAS示例,但用HAL JSON表示(为了清晰起见,删除了scheme、host等):
GET /accounts/12345
{
"id" : 12345,
"balance" : 100.00
"_links" : {
"self" : {
"href" : "/accounts/12345"
},
"transfer" : {
"href" : "/accounts/12345/transfer{?amount,target}",
"templated" : true
}
}
}
为了执行“转移”操作,客户大概会这样做:
GET /accounts/12345/transfer?amount=100.00,target=54321
{
"id" : 34567,
"amount" : 100.00
"_links" : {
"self" : {
"href" : "/transfers/34567"
},
"source" : {
"href" : "/account/12345"
},
"target" : {
"href" : "/account/54321"
}
}
}
通过GET调用“transfer”链接会在“transfers”中创建一个新的ressource。但是创建一个新资源并不是幂等的,它“感觉”不对;以RESTful资源为中心的API将发布:
POST {amount: 10.00, source: 12345, target: 54321} /transfers/
{
"id" : 34567,
"amount" : 100.00
"_links" : {
"self" : {
"href" : "/transfers/34567"
},
"source" : {
"href" : "/account/12345"
},
"target" : {
"href" : "/account/54321"
}
}
}
但是我该如何描述这篇文章以及HAL中所需的html" target="_blank">表单元素,这样客户就可以在没有硬编码的情况下做“正确的事情”?也许是这样的:
{
"id" : 12345,
"balance" : 100.00
"_links" : {
"self" : {
"href" : "/accounts/12345"
},
"transfer" : {
"href" : "/transfers{?amount,source,target}",
"templated" : true,
"method" : "POST"
}
}
}
但是method
不是HAL规范的一部分,也没有类似的标识符——所以感觉我走错了方向。。。
也许我的客户应该知道,一个GET的传输
返回匹配的传输资源,一个POST到传输
创建一个新的传输资源。
FWIW,我的实现使用Spring Boot 2和Spring HATEOAS,所以后续问题是如何用Spring HATEOAS表达这一点...
你不能对哈尔这么做。哈尔的创始人迈克·凯利在GitHub上发表声明
这样做的HAL方法是使用链接rel留档以人类可读的形式传达可用的方法。也就是说,你的树皮例子看起来像这样(注意“树皮”链接rel现在是一个网址)
{
"_links": {
"http://docs.example.com/barks": { "href": "/v1/dogs/1/barks" }
}
}
如果开发人员获取URLhttp://docs.example.com/barks在浏览器中,文档可以指定可用的方法、有效的请求主体、潜在的响应代码、响应主体等。然后开发人员将其编码到她正在构建的客户机中。
这是HAL规范imho的一个主要缺陷,但还有其他媒体类型可以解决这个问题,比如Mason或HAL扩展HAL-FORMS。也许值得一看,尽管我不确定它们是如何与Spring集成的。
我有一个名为AdminResource的父资源和一个名为AdminModuleResource的子资源。 父资源已正确安装HATEOAS链接: 子资源也正确安装了HATEOAS链接: 但是它的父资源已经失去了链接。 目前,在我的子管理模块资源中,父管理资源没有链接。事实上,汇编程序的toResources方法只提供子管理模块资源的链接。 你知道我如何在子管理模块资源中添加到父管理资源的链接吗? 编
我正在使用sping-boot-2.2.1和sping-HATEOAS。超媒体链接工作正常,但是我在返回链接时看到了属性,请在这里找到下面的代码作为参考和github中的项目, 终点: a)将返回集合模型= 和 b) 将返回列表 控制器。Java 实际反应 预期反应: 我试过了 Spring数据RestdefaultMediaType=application/json spring.hateoas
我在Wordpress上有一个旋转木马。我发现我不能在Chrome上点击任何项目链接,但当我使用Safari或Firefox时,它工作得很好。你可以看到我住在这里。我认为这是因为Safari/Firefox中旋转木马的辅助功能无法在项目之间拖动移动,但所有链接都可以工作。
我发现了这个网站:http://www.jfletcherdesign.com. 我想复制一下主页上显示他所有帖子的特色图片的方式,以及当你点击你在特定帖子中深入查看的图片时显示的方式。我还想复制一下你是如何在一个类别中点击“前进”和“下一步”并将一个图像添加到相应的帖子中的。 有人能为我指出设置此功能的正确方向吗? 如果你能给我指出jQuery插件的话,我会得到额外的积分,该插件在他的分类页面上
圈子帖子列表 圈子帖子详情 圈子帖子创建 圈子帖子更新 圈子帖子删除 我的帖子列表 全部帖子列表包含搜索 圈子帖子列表 GET /groups/:group/posts 响应 status 200 参数说明 名称 类型 说明 type string 默认:latest_post, latest_post 最新帖子,latest_reply最新回复 limit integer 默认 15 ,数据
我正在使用Play框架调用一个web服务。功能是: } 我得到的错误是: 我不明白我做错了什么?有什么想法吗?