inflearn logo
강의

Khóa học

Chia sẻ kiến thức

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

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

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

571

kmh

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

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);
    }

java rest-api spring

Câu trả lời 2

3

kmh

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

@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

JuNu

감사합니다. 저도 안되서 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

Spring 시큐리티 관련해서 WebSecurityConfigurationAdapter

0

74

1

junit5 사용하시는 분들

0

89

1

자바 빈 스펙을 준수하는지 체크하는 테스트

0

240

2

REST API 개발 중 비즈니스 로직 적용 부분의 JSON 에러

0

244

1

스프링 부트 3버전에서의 실습

0

192

1

java.lang.AssertionError: Status

0

532

2

spring doc 관련 파일 생성 관련 배포 관련 질문 드립니다.

0

288

1

섹션2 201응답받기 부분 테스트 404에러 질문입니다

0

742

1

강의 자료가 404입니다 확인 부탁 드려요!

0

477

1

연동 DB문의

0

360

1

이벤트 Repository강의 중 Event 클래스에 private Integer Id; 위치 질문

0

506

1

(Mac) postgressql 관련하여 port kill 해도 다시 살아나는 경우

0

380

0

maven으로 생성한 docs파일(index.html)에서의 not found 오류 질문

0

622

1

테스트 오류 질문드립니다.

0

512

1

docs 요청값이 반영이 안되네요... (해결)

-1

395

1

psql 적용 후 에러

0

820

2

mvn package 시 다음과 같은 에러가 나시면

0

765

2

Event에 Account manager를 추가했으면 문서화 필요

0

274

1

2년 훨씬 전 부터 Restlet-> Talend API 로 바뀌었습니다~

1

473

1

asciidoc 추가 스니펫 에러 해결법

0

400

1

_links 는 현재 fieldWithPath 를 해주지 않아도 됩니다.

0

424

3

깃랩 처음 사용자를 위한 index.adoc raw 보는 법

0

333

1

eclipse 쓰시는 분을 위한 maven-resources-plugin 팁

0

336

1

부트 + jupiter 인 경우 설정법

0

343

1