본문 바로가기

코딩

REST API

반응형

API (Application Programming Interface)

  • 프로그래밍 언어가 제공하는 기능을 수행할 수 있게 만든 인터페이스
    • 어플리케이션과 프로그래밍으로 소통하는 방법
    • 프로그래밍을 활용해서 할수 있는 어떤것
  • Web API
    • 웹 어플리케이션 개발에서 다른 서비스에 요청을 보내고 응답을 받기 위해 정의된 명세
    • 현재 웹 개발은 추가로 직접 모든 것을 개발하지 않고 여러 Open API를 가져와서 활용하는 추세
    • ex) 구글, 카카오지도 API, 우편번호, 도로명, 지번 소 검색 API등
  • HTML을 주는것이 아닌 JSON을 이용해서 받을것
  • 프로그래밍을 통한 요청에 JSON을 응답하는 서버를 만드는 것

 

REST

  • REpresentational State Transfer
    • 웹 설계상의 장점을 최대한 활용 할 수 있는 아키텍처 방법론
    • 네트워크 아키텍쳐 원리의 모음
      1. 자원을 정의
      2. 자원에 대한 주소를 지정하는 방법
    • REST 원리를 따르는 시스템 혹은 API를 RESTful API라고 하기도 함
  • '자원'과 '주소'를 지정하는 방법
    • 자원 - URI
    • 행위 - HTTP Method
    • 표현 - Representations

 

URI

  • Unifor Resource Identifier
  • 통합자원 식별자
  • 인터넷의 자원을 나타내는 유일한 주소
  • 인터넷에서 자원을 식별하거나 이름을 지정하는 데 사용되는 간단한 문자열

 

URL

  • Uniform Resource Locator
  • 통합 자원 위치
  • 네트워크 상에 자원(리소스)이 어디 있는지 (주소)를 알려주기 위한 약속

 

URN

  • Uniform Resource Name
  • 통합 자원 이름
  • URL과 달리 자원의 위치에 영향을 받지않는 유일한 이름 역할 (독립적 이름)

 

URI 구조

 

 

URL과 URI

  • URI는 크게 URL과 URN으로 나눌 수 있지만 일반적으로 URL 로 통칭하여 사용함
  • 하지만 URI > URL 관계를 가지고 있다.

 

URI 설계 주의사항

  • 밑줄_이 아닌 하이픈-을 사용
  • 소문자 사용
  • 파일 확장자는 포함시키지 않음

 

HTTP

  • HTML 문서와 같은 자원들을 가져올 수 있도록 해주는 프로토콜
  • 웹에서 이루어지는 모든 데이터 교환의 기초
  • 클라이언트 -서버 프로토콜
  • 요청과 응답으로 이루어짐
  • 특징
    • 비연결지향 - 서버는 응답후 접속을 끊음
    • 무상태 - 접속이 끊어지면 클라이언트와 서버 간의 통신이 끝나며 상태를 저장하지 않음
    • 위의 두가지 특성을 보완하기 위하여 쿠키와 세션 활용
  • 자원에 대한 행위
  • 즉, HTTP는 HTTP Method를 정의하여 주어진 자원에 수행하길 원하는 행동을 나타냄
  • 의미론적으로 행위를 규정하기 때문에 '실제 그 행위 자체가 수행됨'을 보장하진 않음
  • 종류
    • GET : 특정 자원의 표시를 요청, 오직 데이터를 받기만 함
    • POST : 서버로 데이터를 전송하며, 서버에 변경사항을 만듦.
    • PUT : 요청한 주소의 자원을 수정
    • DELETE : 지정한 자원을 삭제

 

 

RESTful 한 표현

  • 행위에 대한 표현 포함 X -> 무조건 HTTP method 이용
  • 자원에 대한 행위는 HTTP method로 표현

 

 

Representations

  • JSON
    • 문자열기반의 객체
    • 자바스크립트 객체 문법을 따르며, 구조화된 데이터를 표현하기 위한 문자 기반 데이터 포맷
    • 사람이 읽고 쓰기 쉽고 기계가 파싱하고 만들어 내기 쉬움
    • 파이썬의 dic, 자바스크립트의 object처럼 C계열의 언어가 갖고 있는 자료구조로 변환하기 쉬움

 

REST 핵심규칙

  • URI는 정보의 자원을 표현해야 한다.
  • 자원에 대한 어떠한 행위는 HTTP Method로 표현한다.
반응형