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 (将#修改为@)