- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试记录使用 Spring Rest 文档返回所有者列表的方法,但我不知道如何记录 Hateoas 提供的链接。
linkWithRel(...) 不适用于 _embedded.ownerDtoList 对象。
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class OwnerDto extends RepresentationModel<OwnerDto> {
@Null
private UUID id;
@NotBlank
@Size(min = 3, max = 20)
private String name;
}
@GetMapping(value = "")
public ResponseEntity<CollectionModel<OwnerDto>> getOwners() {
List<OwnerDto> owners = ownerService.findAllOwners();
HttpHeaders headers = new HttpHeaders();
headers.add("X-Owners-Total", Integer.toString(owners.size()));
owners.stream().map(owner -> owner
.add(linkTo(OwnerController.class).slash(owner.getId()).withSelfRel())
.add(linkTo(OwnerController.class).withRel("owners")))
.collect(Collectors.toList());
Link mainSelfLink = linkTo(OwnerController.class).withSelfRel();
return new ResponseEntity<>(
new CollectionModel<>(owners, mainSelfLink),
headers,
HttpStatus.OK
);
}
public void findAllOwners() throws Exception {
List<OwnerDto> ownerDtoList = Arrays.asList(ownerDto_1, ownerDto_2);
Mockito.when(ownerService.findAllOwners()).thenReturn(ownerDtoList);
mockMvc.perform(get("/api/v1/owner")
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(jsonPath("$._embedded.ownerDtoList[0].id", is(ownerDto_1.getId().toString())))
.andExpect(jsonPath("$._embedded.ownerDtoList[0].name", is(ownerDto_1.getName())))
.andExpect(jsonPath("$._embedded.ownerDtoList[1].id", is(ownerDto_2.getId().toString())))
.andExpect(jsonPath("$._embedded.ownerDtoList[1].name", is(ownerDto_2.getName())))
.andExpect(header().longValue("X-Owners-Total", 2L))
.andDo(document("v1/{method-name}", ownerPageHeadersSnippet(), ownerCollectionResponseFieldsSnippet(),
links(
halLinks(),
linkWithRel("owners").description("Get all owners <<Resource>>"),
linkWithRel("self").description("Self <<Resource>>")
)
));
}
{
"_embedded": {
"ownerDtoList": [
{
"id": "9eccbed8-6184-470c-b635-7d7bd4196caf",
"name": "Szymaa",
"_links": {
"self": {
"href": "http://localhost:8088/api/v1/owner/9eccbed8-6184-470c-b635-7d7bd4196caf"
},
"owners": {
"href": "http://localhost:8088/api/v1/owner"
}
}
},
{
"id": "f0edf088-d1ff-49dc-9561-e65ab0dcd645",
"name": "dsad23",
"_links": {
"self": {
"href": "http://localhost:8088/api/v1/owner/f0edf088-d1ff-49dc-9561-e65ab0dcd645"
},
"owners": {
"href": "http://localhost:8088/api/v1/owner"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8088/api/v1/owner"
}
}
}
org.springframework.restdocs.snippet.SnippetException: Links with the following relations were not found in the response: [owners]
最佳答案
Spring REST 文档不支持开箱即用。建议的方法是链接到嵌入资源的文档,而不是将嵌入资源的链接记录为嵌入该资源的每个资源的文档的一部分。在您的情况下,这将是指向 ownerDtoList
资源文档的链接(我怀疑它可以作为 http://localhost:8088/api/v1/owner 提供)。
如果您希望在嵌入的资源链接的各处记录它们,则可以实现自定义 LinkExtractor
并使用它代替 halLinks()
。
您可以在 this Spring REST Docs issue 中了解有关上述内容的更多信息。 .
关于java - 如何记录剩余文档中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58810129/
我正在运行一个带有 while 约束的 SQL 查询,其中包含一些“id”。例如: SELECT table.id FROM TableOne table WHERE table.id IN (1,
我正在寻找在替换其中一个元素后打印元素列表的最正确方法。我可以按如下方式做,但显然很困惑。 #!/usr/bin/python import sys file = open(sys.argv[1])
这个问题在这里已经有了答案: How wide is the default `` margin? (4 个答案) How do I remove the top margin in a web
当我尝试使用命令安装 rvm 时::(I am Using UBUNTU 12.04 LTS) curl -L https://get.rvm.io | bash -s 当我尝试与简单用户相同的命令时
我使用 GOPro 工作人员 6 个月前发送给我的命令,通过终端(在 Gopro 网络上)使用 Gopro Hero3 拍摄照片/视频。有效。但是,在过去的一个月里,我一直在尝试再次执行此操作,并且不
尽管知道我不应该关闭应用程序按钮,但我仍然这样做。完成所有 Activity 后,我调用 finish() 方法,它们调用析构函数和所有内容。用户的行为也是正确的。但我想知道为什么还有 5 个打开的线
当我在 Rest Controller 中的类级别启用 @Validated spring 注释时,会生成 2 个验证上下文(每个验证上下文都有不同的前缀)。 @Validated 注释是必需的,因为
在旧的 API 中,剩余的允许容量显然作为 X-Ratelimit-Remaining 返回HTTP header 。 然而,current version's documentation对此一无所获
我一直在使用 Service Fabric 一段时间,成功构建、部署和测试了多个服务,但我刚刚完成构建的服务在部署时失败(请参阅下面的错误)。在诊断中,我尝试使用 VS 模板(没有代码更改)创建和部署
这个问题在这里已经有了答案: 关闭 12 年前。 Possible Duplicate: Progress unit in ProgressDialog 如何覆盖进度条进度消息,即 61/100 到
我正在用 Objective-C (Cocoa) 编写命令行实用程序的前端。我需要解析输出以检查不同类型的消息。有两种基本类型;信息消息和下载状态消息。信息消息始终以以下内容之一开头:INFO:、WA
我是一名优秀的程序员,十分优秀!