如何解决Spring HATEOAS RepresentationModelAssembler 生成带有 Pageable 参数的链接
我有一个 MemberController,它有两个 GetMappings,一个返回成员的分页列表,另一个返回一个成员。我有一个 MemberModelAssembler,它覆盖 toModel 并返回一个 selfRel() 链接。如何让 MemberModelAssembler 中的 toModel 方法返回每个成员的分页链接?鉴于我无法将 Pageable 和 PagedResourcesAssembler 传递给 MemberModelAssembler?
调用 api/v1/member/1 时的预期结果
{
"id": 1,"phone": "85298890006","profileImageUrl": null,"displayedName": "Mak","salutation": "MS","_links": {
"self": {
"href": "http://localhost:8080/api/v1/member/1"
}
*****Want to achieve this*****
"members": {
"href": "http://localhost:8080/api/v1/memberpage=0&size=20"
*****Want to achieve this*****
}
}
我的会员控制器:
@RestController
@RequestMapping("api/v1/member")
class MemberController(
private val service: MemberService,private val assembler: MemberModelAssembler
) {
@GetMapping
fun findAll(
pageable: Pageable,pagedResourcesAssembler: PagedResourcesAssembler<Member>
): ResponseEntity<PagedModel<EntityModel<Member>>> {
val members = service.findAll(pageable)
return ResponseEntity(pagedResourcesAssembler.toModel(members,assembler),HttpStatus.OK)
}
@GetMapping("/{id}")
fun findById(@PathVariable id: Int): ResponseEntity<EntityModel<Member>> {
val member = service.findById(id) ?: throw ItemNotFoundException(this::class.simpleName!!,id)
return ResponseEntity(assembler.toModel(member),HttpStatus.OK)
}
}
我的 MemberModelAssembler
@Component
class MemberModelAssembler : RepresentationModelAssembler<Member,EntityModel<Member>> {
override fun toModel(member: Member) =
EntityModel.of(
member,linkTo(methodOn(MemberController::class.java).findById(member.id)).withSelfRel(),)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。