Json 구조 분석 / REST API / HTTP

velog_ghost·2022년 8월 2일
0

[SeSAC] TIL📚

목록 보기
16/19

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

  • Client / Server의 관계를 의미

계층형 구조

  • 내부적으로 계층적으로 구현하는 구조

REST API 장단점


REST API 장점

  • 웹의 장점을 최대한 활용함 -> 특정 언어나 기술에 종속 x, 프로토콜 별도 구현 x, 손쉽게 웹 환경에 접근하여 구현 가능
  • API 엔드 포인트나 메세지만 가지고 API의 의도를 직관적으로 파악할 수 있음.

REST API 단점

  • 필요한 정보값보다 더 많은 정보값이 로딩될 수 있음
  • Overfetching 네이버 영화 API에서 많은 정보들을 사용하지 않아도, 영화 정보들을 다 받아와야 함.
  • Underfetching : 필요한 정보보다 부족한 정보 로딩으로 인해 추가 API 요청이 필요
  • Endpoint : 서비스 규모가 커질수록 엔드포인트가 늘어나 관리하기 어려워 짐
  • 서비스 및 업데이트로 기존 API 엔드포인트가 삭제되거나 변경 될 경우, 클라이언트 업데이트를 하지 않은 사용자에게 문제가 발생할 수 있음.

HTTP의 특징


  • 비연결성(connectionless) : 서버에게 요청하면 그때 응답해주고 그 뒤로 연결 x
  • 무상태성(Stateless) : 클라이언트에 대한 정보를 가지고 있지 않음. 즉, 같은 유저인지 식별할 수 없음 -> 세션, 쿠키, 토큰과 같은 방식으로 회원 정보를 저장함 (ex: 세션이 만료되었습니다.)
  • 단방향 통신 : 클라이언트 요청이 있을 때만 서버가 응답하는 방식 -> 서버가 먼저 클라이언트에게 정보 제공 x

0개의 댓글