gpt4 book ai didi

java - Spring HATEOAS 和 HAL : Change array name in _embedded

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:31:44 24 4
gpt4 key购买 nike

我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API。

经过一些摆弄后,我设法大部分按预期开始工作。(示例)输出现在看起来像这样:

{
"_links": {
"self": {
"href": "http://localhost:8080/sybil/configuration/bricks"
}
},
"_embedded": {
"brickDomainList": [
{
"hostname": "localhost",
"port": 4223,
"_links": {
"self": {
"href": "http://localhost:8080/sybil/configuration/bricks/localhost"
}
}
},
{
"hostname": "synerforge001",
"port": 4223,
"_links": {
"self": {
"href": "http://localhost:8080/sybil/configuration/bricks/synerforge001"
}
}
}
]
}
}

我不喜欢“brickDomainList”数组的名称。理想情况下,它应该说“砖 block ”。我该如何改变它?

这是产生输出的 Controller :

@RestController
@RequestMapping("/configuration/bricks")
public class ConfigurationBricksController {

private BrickRepository brickRepository;
private GraphDatabaseService graphDatabaseService;

@Autowired
public ConfigurationBricksController(BrickRepository brickRepository, GraphDatabaseService graphDatabaseService) {

this.brickRepository = brickRepository;
this.graphDatabaseService = graphDatabaseService;
}

@ResponseBody
@RequestMapping(method = RequestMethod.GET, produces = "application/hal+json")
public Resources<BrickResource> bricks() {

List<BrickDomain> bricks;
List<BrickResource> resources = new ArrayList<>();
List<Link> links = new ArrayList<>();

Link self = linkTo(ConfigurationBricksController.class).withSelfRel();
links.add(self);

try(Transaction tx = graphDatabaseService.beginTx()) { // begin transaction

// get all Bricks from database and cast them into a list so that they're actually fetched
bricks = new ArrayList<>(IteratorUtil.asCollection(brickRepository.findAll()));

// end transaction
tx.success();
}

for (BrickDomain brick : bricks) {
self = linkTo(methodOn(ConfigurationBricksController.class).brick(brick.getHostname())).withSelfRel();

BrickResource resource = new BrickResource(brick, self);

resources.add(resource);
}

return new Resources<>(resources, links);
}
}

是否有一些注释或我可以添加的东西来更改数组的名称?

如果您想要/需要查看 BrickResource 类或存储库或其他内容,请查看此处:https://github.com/ttheuer/sybil/tree/mvctest/src/main/java/org/synyx/sybil

BrickResource 在 api/resources/,repository 在 database/,BrickDomain 在 domain/。

谢谢!

最佳答案

只需使用 Evo Inflector .如果你有一个 Maven 项目然后添加依赖项

<dependency>
<groupId>org.atteo</groupId>
<artifactId>evo-inflector</artifactId>
<version>1.2</version>
</dependency>

或者你可以添加@Relation(collectionRelation = "bricks")BrickDomain

@Relation(collectionRelation = "bricks")
public class BrickDomain { … }

关于java - Spring HATEOAS 和 HAL : Change array name in _embedded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28834796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com