微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java – Spring HATEOAS&HAL:在_embedded中更改数组名称

我正在尝试使用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","_links": {
                    "self": {
                        "href": "http://localhost:8080/sybil/configuration/bricks/synerforge001"
                    }
                }
            }
        ]
    }
}

我不喜欢“brickDomainList”数组的名称.理想情况下应该说“砖块”.我该怎么改变它?

这是产生输出的控制器:

@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 ResourcesfigurationBricksController.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类或Repositories或其他内容,请查看此处:https://github.com/ttheuer/sybil/tree/mvctest/src/main/java/org/synyx/sybil

BrickResource位于api / resources /中,存储库位于database /中,而BrickDomain位于domain /中.

谢谢!

最佳答案
只需使用Evo Inflector.如果您有Maven项目,则添加依赖项

或者,您可以将@Relation(collectionRelation =“bricks”)添加到BrickDomain类

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐