Data Engineering - API란?


API란 무엇인가?

API에 대해서 알아봅니다.

Application Programming Interface

  • 두개의 시스템이 서로 상호 작용하기 위한 인터페이스
  • API라고 부를땐 보통 REST API를 지칭

WEB API

  • 웹을 통해 외부 서비스들로부터 정보를 불러오는 API
  • 대표적인 데이터타입
    • JSON
    • XML
    • CSV
    • HTML
  • REST API 모델 도식화 그림

image-20200818224252365

  • 웹사이트는 HTTPS 프로토콜을 사용하는 REST API 기반으로 구축된다

API 접근 권한 종류

  • Authentification: Identity가 맞다는 증명
  • Authorization: API를 통한 어떠한 액션을 허용
  • API가 Authentification을 하여도 어떠한 액션에 대해서는 Authorization을 허용하지 않을 수 있다.

API의 필수조건 = 시큐리티

시큐리티가 취약할경우 발생할 이벤트

  • DELETE Request를 통해 다른 이용자의 정보를 지울 수 있음
  • 제3자에게 데이터 유출로 이어질 수 있음
  • 누가 API를 사용하는지 트래킹 불가

API Key에 대하여

API KEY 는 통상적으로 Request URL 혹은 Request 헤더에 포함되는 긴 스트링을 의미

예시) RnJIDTexXBH13BH 이런형태.. 구글맵스 사용시 필요.. 등등

  • Basic Auth : username:password 와 같은 Credintial을 Base64 암호화방식으로 인코딩한 값을 리퀘스트 헤더안에 포함. Request할때 심는다고 보면 됨
  • OAuth 2.0: 최근에 가장 많이 사용되는 형태. Facebook같은 곳에서 이러이러한 정보를 쉐어하는 것에 동읳느냐 라는 화면이 모두 OAuth 방식이다.
    • Server: Spotify
    • Client: Application
    • Resource: the end user data and controls

image-20200818225251639

Status Code 참조

STATUS CODEDESCRIPTION
200OK - The request has succeeded. The client can read the result of the request in the body and the headers of the response.
201Created - The request has been fulfilled and resulted in a new resource being created.
202Accepted - The request has been accepted for processing, but the processing has not been completed.
204No Content - The request has succeeded but returns no message body.
304Not Modified. See Conditional requests.
400Bad Request - The request could not be understood by the server due to malformed syntax. The message body will contain more information; see Response Schema.
401Unauthorized - The request requires user authentication or, if the request included authorization credentials, authorization has been refused for those credentials.
403Forbidden - The server understood the request, but is refusing to fulfill it.
404Not Found - The requested resource could not be found. This error can be due to a temporary or permanent condition.
429Too Many Requests - Rate limiting has been applied.
500Internal Server Error. You should never receive this error because our clever coders catch them all … but if you are unlucky enough to get one, please report it to us through a comment at the bottom of this page.
502Bad Gateway - The server was acting as a gateway or proxy and received an invalid response from the upstream server.
503Service Unavailable - The server is currently unable to handle the request due to a temporary condition which will be alleviated after some delay. You can choose to resend the request again.

Endpoint - Resource를 액세스하는 경로 또는 방법

Method - 리소스 접근에 허용된 행위(GET, POST, PUT, DELETE)

image-20200818231101144

Method의 정의

  • GET : 해당 리소스를 조회하고 정보를 가져옴
  • HEAD : GET 방식과 동일하나 응답코드와 HEAD만 가져옴
  • POST : 요청된 리소스를 생성
  • PUT : 요청된 리소스를 업데이트
  • DELETE : 요청된 리소스를 삭제

Parameter 정의

Endpoint를 통해 Request 할 때 같이 전달하는 옵션들

  • Header : Request header에 포함되는 parameter로 주로 Authorization에 관련됨

  • Path : Query String (?, 물음표) 이전에 Endpoint Path 안에 포함되는 변수

  • Query Parameter: Query String(?, 물음표) 이후에 포함되는 Parameters

  • Request Body: Request Body안에 포함되는 Parameters. 주로 JSON 형태


이 글이 도움이 되셨다면 추천 클릭을 부탁드립니다 :)

Buy me a coffeeBuy me a coffee





© 2020 modified by Tae You Kim

Powered by "shoman2"