Data Engineering - API란?
in Data Science on Engineering
API란 무엇인가?
API에 대해서 알아봅니다.
Application Programming Interface
- 두개의 시스템이 서로 상호 작용하기 위한 인터페이스
- API라고 부를땐 보통 REST API를 지칭
WEB API
- 웹을 통해 외부 서비스들로부터 정보를 불러오는 API
- 대표적인 데이터타입
- JSON
- XML
- CSV
- HTML
- REST API 모델 도식화 그림
- 웹사이트는 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
Status Code 참조
STATUS CODE | DESCRIPTION |
---|---|
200 | OK - The request has succeeded. The client can read the result of the request in the body and the headers of the response. |
201 | Created - The request has been fulfilled and resulted in a new resource being created. |
202 | Accepted - The request has been accepted for processing, but the processing has not been completed. |
204 | No Content - The request has succeeded but returns no message body. |
304 | Not Modified. See Conditional requests. |
400 | Bad Request - The request could not be understood by the server due to malformed syntax. The message body will contain more information; see Response Schema. |
401 | Unauthorized - The request requires user authentication or, if the request included authorization credentials, authorization has been refused for those credentials. |
403 | Forbidden - The server understood the request, but is refusing to fulfill it. |
404 | Not Found - The requested resource could not be found. This error can be due to a temporary or permanent condition. |
429 | Too Many Requests - Rate limiting has been applied. |
500 | Internal 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. |
502 | Bad Gateway - The server was acting as a gateway or proxy and received an invalid response from the upstream server. |
503 | Service 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)
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 형태
이 글이 도움이 되셨다면 추천 클릭을 부탁드립니다 :)