Json 구조 분석 - swiftyJSON
json에 바로 접근 가능
json["bnusNo"]
배열의 형태인 json
image_url에 접근하려면? json[0]["image_url"]
만약 미션임파서블:고스트프로토콜이라는 무비이름에 접근하고 싶다면?
json["dailyBoxOfficeList"][0]["movieNm"].stringValue
이렇게 해주면 데일리 박스 오피스의 맨 처음의 배열에 movieNm을 가지고 온다는 의미!
http -> ATS
https -> ATS x 주의
REST API : 네트워크를 통해서 핵심 컨텐츠와 기능을 활용할 수 있도록 제공되는 인터페이스, 아키텍쳐 스타일
자원(Resource)을 중심으로 엔드포인트(URI)를 생성하고, HTTP method(Get, Post, Delect)를 통해 동작 수행
REST API 6원칙
Uniform Interface
- 자원에 대한 식별이 가능해야함
- HTTP method를 통해 자원을 조작해야함. (get으로 데이터 가져오기 등)
Stateless
- HTTP 특징
- REST는 HTTP위에서 구현되기 때문에, REST 또한 무상태성을 가짐
Cacheable
- REST는 HTTP 위에서 구현되기 때문에, HTTp 강력한 특징인 캐싱 기능을 활용할 수 있음
- 네트워크 리소스 및 인프라 리소스를 경감시킬 수 있음
Self - Descriptiveness
- REST API 메세지(Response/요청 URL/Endpoint 등)만 보고도, 어떤 의도로 구성되어 있는 지 직관적으로 파악할 수 있어야 함
- 즉, 쉽게 이해할 수 있는 자체 표현 구조를 가져야 함.
Client - Server
계층형 구조
REST API 장단점
REST API 장점
- 웹의 장점을 최대한 활용함 -> 특정 언어나 기술에 종속 x, 프로토콜 별도 구현 x, 손쉽게 웹 환경에 접근하여 구현 가능
- API 엔드 포인트나 메세지만 가지고 API의 의도를 직관적으로 파악할 수 있음.
REST API 단점
- 필요한 정보값보다 더 많은 정보값이 로딩될 수 있음
- Overfetching 네이버 영화 API에서 많은 정보들을 사용하지 않아도, 영화 정보들을 다 받아와야 함.
- Underfetching : 필요한 정보보다 부족한 정보 로딩으로 인해 추가 API 요청이 필요
- Endpoint : 서비스 규모가 커질수록 엔드포인트가 늘어나 관리하기 어려워 짐
- 서비스 및 업데이트로 기존 API 엔드포인트가 삭제되거나 변경 될 경우, 클라이언트 업데이트를 하지 않은 사용자에게 문제가 발생할 수 있음.
HTTP의 특징
- 비연결성(connectionless) : 서버에게 요청하면 그때 응답해주고 그 뒤로 연결 x
- 무상태성(Stateless) : 클라이언트에 대한 정보를 가지고 있지 않음. 즉, 같은 유저인지 식별할 수 없음 -> 세션, 쿠키, 토큰과 같은 방식으로 회원 정보를 저장함 (ex: 세션이 만료되었습니다.)
- 단방향 통신 : 클라이언트 요청이 있을 때만 서버가 응답하는 방식 -> 서버가 먼저 클라이언트에게 정보 제공 x