스프링 기반 REST API
스프링 기반 REST API
REST API
- API: Application Programming Interface
- REST: REpresentational State Transfer
- 인터넷 상의 시스템 간의 상호 운용성(interoperability)을 제공하는 방법중 하나
- 시스템 제각각의 독립적인 진화를 보장하기 위한 방법
- REST API: REST 아키텍처 스타일을 따르는 API
- Uniform Interface
- Identification of resources
- mainpulation of resources through represenations
- self-descrive message
- hypemiss as the engine of application state(HATEOAS)
- Self-descriptive message
- 메시지 스스로 메시지에 대한 설명이 가능해야 한다.
- 서버가 변해서 메시지가 변해도 클라이언트는 그 메시지를 보고 해석이 가능하다.
- 확장 가능한 커뮤니케이션
- HATEOAS
- 하이퍼미디어(링크)를 통해 애플리케이션 상태 변화가 가능해야 한다.
- 링크 정보를 동적으로 바꿀 수 있다. (Versioning 할 필요 없이)
- Self-descriptive message 해결 방법
- 방법1: 미디어 타입을 정의하고 IANA에 등록하고 그 미디어 타입을 리소스 리턴할 때 Content-Type으로 사용한다.
- 방법2: profile 링크 헤더를 추가한다. 브라우저들이 아직 스펙 지원을 잘 안하므로, 대안으로 HAL의 링크 데이터에 profile링크 추가
- HATEOAS 해결 방법
- 방법1: 데이터에 링크 제공
- 방법2: 링크 헤더나 Location을 제공
Event REST API
- 이벤트 등록, 조회 및 수정 API
GET /api/events
이벤트 목록 조회 REST API(로그인 안 한 상태)
- 응답에 보여줘야 할 데이터
- 이벤트 목록
- 링크
- self
- profile: 이벤트 목록 조회 API 문서로 링크
- get-an-event: 이벤트 하나 조회하는 API 링크
- next: 다음 페이지(optional)
- prev: 이전 페이지(optional)
이벤트 목록 조회 REST API(로그인 한 상태)
- 응답에 보여줘야 할 데이터
- 이벤트 목록
- 링크
- self
- profile: 이벤트 목록 조회 API 문서로 링크
- get-an-event: 이벤트 하나 조회하는 API 링크
- create-new-event: 이벤트를 생성할 수 있는 API 링크
- next: 다음 페이지(optional)
- prev: 이전 페이지(optional)
- 로그인 한 상태?
- 사실은 Bearer 헤더에 유효한 AccessToken이 들어있는 경우
POST /api/events
- 이벤트 생성
GET /api/events/{id}
- 이벤트 하나 조회
PUT /api/events/{id}
- 이벤트 수정
Events API 사용 예제
- (토큰 없이) 이벤트 목록 조회 - create 안 보임
- access token 발급 받기 (A 사용자 로그인)
- (유효한 A토큰 가지고) 이벤트 목록 조회 - create event 보임
- (유효한 A토큰 가지고) 이벤트 만들기
- (토큰 없이) 이벤트 조회 - update 링크 안 보임
- (유효한 A토큰 가지고) 이벤트 조회 - update 링크 보임
- access token 발급 받기 (B 사용자 로그인)
- (유효한 B토큰 가지고) 이벤트 조회 - update 안 보임
REST API 테스트 클라이언트
- 크롬 플러그인 - Restlet
- 애플리케이션 - Postman