当前位置: 首页 > 知识库问答 >
问题:

使用Spring数据核心中的PagedResourcesAssembler生成HATEOAS链接

太叔弘壮
2023-03-14
public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,
                                                    Pageable pageable, PagedResourcesAssembler<Party> assembler ) {

        Map<String,String> searchFilters = RequestValidator.validateContractSearchFilters(request);

        Page<Party> parties = repository.findByFirstNameOrLastName(searchFilters.get("firstName"), searchFilters.get("lastName"), pageable);

        return new ResponseEntity(assembler.toResource(parties), HttpStatus.OK);

    }
{
  "_embedded": {
    "partyList": [
      {
        "firstNm": "John",
        "lastNm": "Doe",
      },
      {
        "firstNm": "Bob",
        "lastNm": "Smith",
       }
        ],
      }
    ]
  },
  "_links": {
    "first": {
      "href": "http://localhost:8080/v1/party/search?page=0&size=2"
    },
    "self": {
      "href": "http://localhost:8080/v1/party/search?page=0&size=2"
    },
    "next": {
      "href": "http://localhost:8080/v1/party/search?page=1&size=2"
    },
    "last": {
      "href": "http://localhost:8080/v1/party/search?page=7&size=2"
    }
  },
  "page": {
    "size": 2,
    "totalElements": 16,
    "totalPages": 8,
    "number": 0
  }
}

如您所见,我获得了整个party搜索的链接,但没有获得单个party对象的链接。(我想我的问题类似于这个问题:如何在子资源中添加HATEOAS链接),但我不太确定,所以我发布了我自己的。

任何帮助都将不胜感激!谢谢!

共有1个答案

夹谷英奕
2023-03-14

您需要对扩展ResourceAssemblerSupport的类的引用。

将myResourceAssembler更改为您的类,这应该是可行的:

控制器中:

private final MyResourceAssembler myResourceAssembler;

public MyController(MyResourceAssembler myResourceAssembler) {
   this.myResourceAssembler = myResourceAssembler;
}

public HttpEntity<PagedResources<Party>> search(@RequestBody PartySearchRequest request,
                                                Pageable pageable, PagedResourcesAssembler<Party> assembler ) {

    Map<String,String> searchFilters = RequestValidator.validateContractSearchFilters(request);

    Page<Party> parties = repository.findByFirstNameOrLastName(searchFilters.get("firstName"), searchFilters.get("lastName"), pageable);

    Link selfLink = linkTo(methodOn(this.getClass().view(pageable, null)).withSelfRel();

    return new ResponseEntity(assembler.toResource(parties, myResourceAssembler, selfLink), HttpStatus.OK);

}
return new ResponseEntity(assembler.toResource(parties, myResourceAssembler), HttpStatus.OK);
    null
 类似资料:
  • 我正在使用Spring 4.0.0. RELEASE,Spring数据共享1.7.0. M1,Spring Hateoas 0.8.0. RELEASE 我的资源是一个简单的POJO: 我的资源汇编程序将User对象转换为UserResources对象: 在我的UserController我想检索

  • 我使用的是spring-boot:1.3.3、spring-hateoas:0.19.0和spring-data-rest-core:2.4.4。 这是Spring-Hateoas提供的内容的例子。过了一段时间,我将我的应用程序切换到SSL。

  • 问题内容: Xcode 8更新: 在Xcode 8中,需要转到Core Data Model Editor并显示File Inspector。底部附近是代码生成的选项。选择快速。 编辑 :我找到了从核心数据实体生成Swift模型的解决方案: 在Xcode上: 编辑器 >创建NSManagedOjbect>单击按钮“下一步”>单击按钮“下一步”>选择“快速”语言>单击按钮“创建” 我使用Core D

  • 我的项目中有两个域对象,和。s分别与单个相关联。我正在使用Spring-Data-Rest,它是抽象,所以我有这个: 当我通过HTTP获取时,我会得到这个: 但是,我不能将相同的内容发回以首先创建文档。我发现最好的办法是发布以下内容: 然而,这似乎真的很奇怪,因为: a) 现在,我在对象中嵌入了一个未命名、未类型化的链接,这不是很HATEAOS(尽管Spring似乎正确地反序列化了它)。 b)我现

  • 从sln目录工程 从解决方案目录工作 我不希望VS 2017必须安装在构建机器上,所以我从 https://www.visualstudio.com/downloads/ 安装了“Visual Studio 2017的构建工具”。 轰炸sln中的每个项目,错误如下: 错误 MSB4019:找不到导入的项目“C:\Program Files (x86)\Microsoft Visual Studio

  • 问题是,Spring HATEOAS和Spring Data Rest之间有什么区别? 我觉得两者都可以做同样的事情,Spring数据Rest(作为Spring数据的一部分)似乎更有活力。 https://github.com/spring-projects/spring-hateoas https://github.com/spring-projects/spring-data-rest 你什么