Network
HTTP(HyperText Transfer Protocol)
- 클라이언트와 서버 사이에 이루어지는 request/response 프로토콜
- 대표적인 메소드
- GET
- POST/PUT
- DELETE
REST(REpresentational State Transfer Architecture)
- 자원에 접근하는 방법을 정의한 것
REST API 정리
구성
- 자원
- URI
- 행위
- HTTP METHOD
- 표현
- Representation
특징
- Uniform
- URI로 지정한 리소스에 대한 조작을 통일된 동작을 수행하는 스타일 추구
- Stateless
- 상태정보가 없어 서버는 들어오는 요청만을 수행한다.
- Cacheable
- 캐싱 기능을 사용할 수 있음
- Self-descriptiveness
- Rest Api만 보아도 쉽게 이해할 수 있음
- Client-Server구조
- 클라이언트와 서버의 역할을 확실히 분리하여 서로의 관심사만을 신경쓸 수 있음
- 계층형 구조
- 다중 계층으로 구성될 수 있으며, 구조상의 유연성을 둘 수 있음
- 중간 매체를 사용할 수 있음
디자인 가이드
- URI는 정보의 자원을 표현해야 한다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다
REST API 중심 규칙
- URI는 정보의 자원을 표현해야 함
/members/delete/1
는 자원을 표현하는 것이 아닌 행위를 표현한 것임- 따라서, 잘 표현된 방식이 아니다.
- 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)로 표현
URI 설계 시 주의할 점
- 슬래쉬는 계층 관계를 나타내는 데 사용됨
- URI 마지막 문자로 슬래쉬를 포함하지 않음
- URI 가독성을 높이기 위해 하이폰을 사용
- underline을 사용하지 않음
- URI 경로에 소문자가 적합함
- 파일 확장자는 URI에 포함시키지 않는다.
- Accept header를 사용
자원을 표현하는 Colllection과 Document
- Document
- 문서 또는 하나의 객체
- Colllection
- 문서 또는 객체들의 집합
- 보통 집합이기 때문에 복수를 사용함
- Example
http://restapi.example.com/sports/soccer/players/13
- sports, players는 Collection
- soccer, 13은 Document
Retrofit의 역할
- HTTP 통신 구현을 위해 Retrofit과 OkHttp를 사용하는 이유?
OAuth
Role
- Client:보호된 리소스를 요청하는 앱
- Resource Owner : 보호된 리소스에 대한 접근 권한 부여
- Authorization Server : Client에 access token 발급
- Resource Server : 보호된 리소스 호스팅
HTTP 헤더
- Accept: application/json
- type을 지정해줌
- Authorization: Bearer token
- Bearer?
- 인증 type에 속함
- 보통 타입은 “Basic”
- 인증 스킴이라고도 한다.
- OAuth 2.0을 사용하기 위해서는 Bearer를 사용한다.
- Bearer?