728x90
스프링 기반 REST API 개발
1. REST API 및 프로젝트 소개
포스팅 참조 정보
GitHub
공부한 내용은 GitHub에 공부용 Organizations에 정리 하고 있습니다
해당 포스팅에 대한 내용의 GitHub 주소
실습 내용이나 자세한 소스코드는 GitHub에 있습니다
포스팅 내용은 간략하게 추린 핵심 내용만 포스팅되어 있습니다
https://github.com/freespringlecture/spring-rest-api-study/tree/chap01-01-restapi
해당 포스팅 참고 인프런 강의
https://www.inflearn.com/course/spring_rest-api/dashboard
실습 환경
- Java Version: Java 11
- SpringBoot Version: 2.1.2.RELEASE
1. REST API
◼︎ API
Application Programming Interface
◼︎ REST
REpresentational State Tr ansfer
- 인터넷 상의 시스템 간의 상호 운용성(interoperability)을 제공하는 방법중 하나
- 시스템 제각각의 독립적인 진화를 보장하기 위한 방법
- REST API: REST 아키텍처 스타일을 따르는 API
◼︎ 그런 REST API로 괜찮은가
◼︎ REST 아키텍처 스타일 (발표 영상 11분)
- Stateless
- Cache
- Uniform Interface
- Layered System
- Code-On-Demand (optional)
◼︎ Uniform Interface (발표 영상 11분 40초)
- Identification of resources
- manipulation of resources through represenations
- self-descrive messages
- hypermisa as the engine of appliaction state (HATEOAS)
◼︎ 두 문제를 좀 더 자세히 살펴보자
▶︎ Self-descriptive message
- 메시지 스스로 메시지에 대한 설명이 가능해야 한다
- 서버가 변해서 메시지가 변해도 클라이언트는 그 메시지를 보고 해석이 가능하다
- 확장 가능한 커뮤니케이션
▶︎ HATEOAS
- 하이퍼미디어(링크)를 통해 애플리케이션 상태 변화가 가능해야 한다
- 링크 정보를 동적으로 바꿀 수 있다 (Versioning 할 필요 없이!)
◼︎ Self-descriptive message 해결 방법
- 방법1: 미디어 타입을 정의하고 IANA에 등록하고 그 미디어 타입을 리소스 리턴할 때 Content-Type으로 사용한다
- 방법 2: profile 링크 헤더 를 추가한다 (발표 영상 41분 50초)
- 브라우저들이 아직 스팩 지원을 잘 안해
- 대안으로 HAL의 링크 데이터에 [profile 링크](https://tools.ietf.org/html/draft-wilde-profile-link-04) 추가
◼︎ HATEOAS 해결 방법
- 방법1: 데이터에 링크 제공
- 링크를 어떻게 정의할 것인가? HAL
- 방법2: 링크 헤더나 Location을 제공
728x90
'개발강의정리 > Spring' 카테고리의 다른 글
[스프링 기반 REST API 개발] 1-3. Events API 사용 예제 (0) | 2019.12.27 |
---|---|
[스프링 기반 REST API 개발] 1-2. Event REST API (0) | 2019.12.27 |
[스프링 기반 REST API 개발] 0-1. 강좌 소개 (0) | 2019.12.27 |
[스프링 데이터 JPA] 4-13. 스프링 데이터 JPA: 마무리 (0) | 2019.12.14 |
[스프링 데이터 JPA] 4-12. 스프링 데이터 JPA: Auditing (0) | 2019.12.14 |
댓글