小编ETN*_*ETN的帖子

Spring-boot + REST + HATEOAS + HAL

我按照 spring.io Pivotal 教程获得了带有 MySQL 数据库的 REST API,并且事情进展顺利。但是,我发现了一种我无法配置或解决的行为。

当我使用内置功能从 PagingAndSortingRepository 检索我的资源时,生成的 REST 会自动分页并使用有用的 HAL 链接(_links、self、search、链接的资源等)进行封装。我想用那个。

当我实现我的控制器来自定义 PostMapping 行为并引入健全性检查、验证等时,GetMapping 停止工作。所以我重新实现了一个利用我的服务层的 GetMapping。

不幸的是,这样做破坏了之前提供的 HATEOAS。

我想要的是能够自定义 PostMapping,但完全像默认值一样保留 GetMapping。如果可能的话,我很想避免自己编写它,因为我知道框架可以提供它。

有没有办法做到这一点?

控制器:

@RestController
public class PartyMemberController {

    @Autowired
    PartyMemberService partyMemberService;

    @RequestMapping(method = RequestMethod.GET, value = "/partyMembers")
    public ResponseEntity<Iterable<PartyMember>> getAllPartyMembers() {
        Iterable<PartyMember> partyMemberList = partyMemberService.getAll();
        return new ResponseEntity<>(partyMemberList, HttpStatus.OK);
    }

    @RequestMapping(method = RequestMethod.POST, value = "/partyMembers")
    public ResponseEntity<PartyMember> addEmployee(@Valid @RequestBody PartyMember partyMember) {
        if (partyMemberService.exists(partyMember)) {
            return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
        }

        partyMember = …
Run Code Online (Sandbox Code Playgroud)

java spring-hateoas spring-boot spring-restcontroller

6
推荐指数
1
解决办法
3107
查看次数