일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Gradle
- 구현
- 스프링 시큐리티
- 메모이제이션
- 게이트웨이
- Spring Cloud Config
- 도커
- 이분 탐색
- Logback
- Zuul
- 비트마스킹
- 플로이드 와샬
- 주울
- BFS
- ZuulFilter
- docker-compose
- 구간 트리
- Java
- 유레카
- spring boot
- 백트래킹
- 스택
- 이분 매칭
- 서비스 디스커버리
- 트리
- 다익스트라
- spring cloud
- dp
- 달팽이
- 완전 탐색
- Today
- Total
Hello, Freakin world!
RESTful 구현 기술 선택 본문
레퍼런스들을 읽어보고 어떤 걸로 하이퍼미디어를 구현할지 알아보는데 3일? 정도 걸렸다.
하루 대부분 영어 문서들을 거북이처럼 읽어가며 보냈기 때문에 체감상 훨씬 오래걸린 듯한 기분이다.
내가 찾아본 바로 RESTful API를 구현하기 위해서 3가지 방법이 있다.
1. 직접 JSON 응답 객체를 작성한다.
2. Spring HATEOAS 를 이용한다.
3. Spring Data REST 를 이용한다.
1,2번과 3번을 두 그룹으로 나눠서 보자. 내가 느끼기엔 서로 느낌이 좀 달랐다.
1번은 너무너무너무너무 거추장스럽고 고생스럽다.
2번은 1번을 하지 않도록 유틸 클래스와 메서드를 제공한다.
2번은 딱히 어떤 계층에 의존하지 않는다. 보통 컨트롤러 계층에서 작성하지만 굳이 다른 계층에서 할려고 한다면
객체를 전달해서 할 수 있다.
하지만 3번은 Spring Data Jpa의 repository interface를 기반으로 작동한다.
작동 구조와 커스텀 설정을 위해 핵심으로 사용되는 빈, 인터페이스, 애너테이션등을 알아서 그에 맞게 사용해야 된다.
3번은 뭐랄까. 다른 계층에서 해야될게 뒤로 다 쏠리진 않을까? 라는 걱정이 들었다.
3번은 실제로 컨트롤러 없이 리포지터리에 @RepositoryRestResource 라는 애너테이션과 프로퍼티에 기본 url만 정해주면
멋들어진 restful api를 만들어 준다. 하지만 뭔가 과하다는 느낌이 들었다.
Http 상태코드를 고치려면 REST 관련 bean을 찾아서 설정 메서드를 오버라이드 해야만 했다.
뭔가 mvc가 데이터 계층 하나로 뭉쳐져버린 느낌이다.
레퍼런스를 다 읽은건 아니기 때문에 뭔가가 있을지도 모르지만... 여튼 지금 내 맘엔 안든다.
그러니까 결론은
Spring HATEOAS, 너로 정했다!
휴~ 이렇게 정하고 나니 일단 마음은 편하다.
시야가 좁으니 뭘 할려고 해도 시간이 걸린다. 그래도 이번에도 많이 배운것 같다.
'Toy Project > 쇼핑몰 만들기 프로젝트' 카테고리의 다른 글
Item 엔티티 추가 (0) | 2020.08.18 |
---|---|
고객 도메인 RESTful api 1차 완성 (0) | 2020.07.19 |
User 엔티티명 Customer로 수정, Jpa Auditing 적용 (0) | 2020.07.06 |
User 엔티티 작성하기 (0) | 2020.07.04 |
쇼핑몰 v1.0 설계하기 (0) | 2020.07.04 |