강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của kmh8919
kmh8919

câu hỏi đã được viết

Phát triển API REST dựa trên mùa xuân

Ứng dụng HATEOAS mùa xuân

EventResource 객체를 생성하지 않고 EntityModel 객체를 받아와서 처리했습니다.

Viết

·

554

14

소스를 공유합니다.

@PostMapping
    public ResponseEntity createEvent(@RequestBody @Valid EventDto event, Errors errors) {
        if(errors.hasErrors()) {
            return ResponseEntity.badRequest().body(errors);
        }

        eventValidator.validate(event, errors);

        if(errors.hasErrors()) {
            return ResponseEntity.badRequest().body(errors);
        }

        Event newEvent = eventRepository.save(modelMapper.map(event, Event.class));
        Integer eventId = newEvent.getId();
        newEvent.update();

        WebMvcLinkBuilder selfLinkBuilder = linkTo(EventController.class).slash(eventId);
        URI createdUri = selfLinkBuilder.toUri();

        EntityModel eventResource = EntityModel.of(newEvent);
        eventResource.add(linkTo(EventController.class).slash(eventId).withSelfRel());
        eventResource.add(linkTo(EventController.class).withRel("query-events"));
        eventResource.add(selfLinkBuilder.withRel("update-event"));
        return ResponseEntity.created(createdUri).body(eventResource);
    }
javarest-apispring

Câu trả lời 2

3

kmh님의 프로필 이미지
kmh
Người đặt câu hỏi

혹은 아래와 같이 처리하기도 하였습니다.

@PostMapping
    public ResponseEntity createEvent(@RequestBody @Valid EventDto event, Errors errors) {
        if(errors.hasErrors()) {
            return ResponseEntity.badRequest().body(errors);
        }

        eventValidator.validate(event, errors);

        if(errors.hasErrors()) {
            return ResponseEntity.badRequest().body(errors);
        }

        Event newEvent = eventRepository.save(modelMapper.map(event, Event.class));
        Integer eventId = newEvent.getId();
        newEvent.update();

        WebMvcLinkBuilder selfLinkBuilder = linkTo(EventController.class).slash(eventId);
        URI createdUri = selfLinkBuilder.toUri();
        List<Link> links = Arrays.asList(
                selfLinkBuilder.slash(eventId).withSelfRel(),
                selfLinkBuilder.withRel("query-events"),
                selfLinkBuilder.withRel("update-event")
        );
        EntityModel eventResource = EntityModel.of(newEvent, links);
        eventResource.add();
        eventResource.add();
        eventResource.add(selfLinkBuilder.withRel("update-event"));
        return ResponseEntity.created(createdUri).body(eventResource);
    }

1

감사합니다. 저도 안되서 Spring hateoas docs를 보니깐 ResourceSupport, Resource 객체가 1.2.1 버전부터 각각 RepresentationModel, EntityModel로 변경되었더라구요.

다른 수강생분들도 본인 hateoas 버전 확인해보시고 1.2.1 이라면 kmh님이작성한 코드로 진행하시면 될 것 같습니다.

https://docs.spring.io/spring-hateoas/docs/1.2.0/reference/html/#migrate-to-1.0.changes

Hình ảnh hồ sơ của kmh8919
kmh8919

câu hỏi đã được viết

Đặt câu hỏi