[CS] API란? Json Place Holder와 공공데이터API 사용기
API란?
항상 막연하게만 느껴지던 API라는 개념이 이 쯤 되니 이해가 간다!
Application Programming Interface의 약자로 말 그대로 클라이언트-(서버가 제공하는)자원 사이에서 통신하기 위한 인터페이스의 역할을 한다.
여기서 이 통신이라는 것도 마구잡이로 할 수 없으니 규칙을 정의하는 것이다.
클라이언트는 정해진 규칙에 맞춰 원하는 자원에 대한 요청을 날리고, 해당 요청에 대한 응답(리소스)을 반환받는다.
이 규칙이자 인터페이스가 바로 API이다.
REST API란?
API는 규칙을 정의하는 것이니, 이 규칙에도 여러가지가 있는데, 그 중 내가 알기로는 현재 가장 많이 사용되는 종류이다.
한마디로 소프트웨어 아키텍처의 종류로 이해하면 된다.
API 개발자는 여러 아키텍처를 사용하여 API를 설계할 수 있습니다. REST 아키텍처 스타일을 따르는 API를 REST API라고 합니다. REST 아키텍처를 구현하는 웹 서비스를 RESTful 웹 서비스라고 합니다. RESTful API라는 용어는 일반적으로 RESTful 웹 API를 나타냅니다. 하지만 REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있습니다.
[출처] AWS
타아키텍처와 비교해 REST 아키텍처가 갖는 특징은 다음과 같다.
- 균일한 인터페이스
통신의 편의를 위해 제약조건이 존재한다. - 무상태 (Statelessness)
서버는 클라이언트에 대한 정보, 상태(세션, 쿠키)를 저장하지 않는다. 따라서 서비스의 자유도가 높아지고 구현이 단순하다. HTTP가 Stateless Protocol이므로 적용된다. - Client-Server 구조
두 영역의 구분이 확실하다. 따라서 서버가 처리할 부분이 줄어들고, 확장성이 좋다. - 캐시 가능성
HTTP 특징인 캐싱 기능을 적용 가능하다. - 계층화 시스템 (Layered System)
REST 서버는 다중 계층으로 구성된다. - 자체 표현 구조 (Self-descriptiveness)
REST API 메시지만 보고도 쉽게 이해 할 수 있다.
URI 형식으로 HTTP 메서드(GET, POST, PUT, DELETE)를 요청해 자원을 조회, 생성, 수정, 삭제할 수 있는 API를 REST API라고 하는 것이다.
HTTP 통신
자원(리소스)을 가져올 수 있도록 해주는 프로토콜, 즉 데이터 교환의 기초가 되는 통신 규칙이다. 클라이언트-서버 프로토콜로 클라이언트가 보낸 요청을 서버가 처리하고 응답을 제공한다.
아래 두가지 문서에 정말 잘 정리되어 있다.
[HTTP 통신의 개요] mdn web docs-overview
[HTTP 요청 메서드] mdn web docs-methods
JSON Place Holder 사용기
Postman을 이용해 API에 요청을 보내고 해당하는 응답을 받아보았다.
Json Place Holder는 구축된 API가 없을 때 API호출을 통해 불러와야 할 정형화된 데이터가 필요할 때 사용하는 곳으로 JSON 요청과 응답을 테스트할 수 있다.
모든 post 조회하기
GET
id=2인 post 조회하기
GET
id=3인 post에 대한 comments 조회하기
GET
- path 이용: resource를 식별하고 싶은 경우
- query parameter 이용: 정렬, 필터링을 하는 경우
post를 하나 등록하기
POST
요청의 body에 JSON 쌍으로 title, body, userId 등을 넣어 등록했다.
공공데이터포털 open API 사용기
회원가입, 로그인 후 ‘에어코리아 대기오염정보 조회 서비스’ 오픈 API를 통해 시도별 대기오염정보를 다음의 쿼리 파라미터들로 요청해보았다.
- 지역 = 서울 (sidoName)
- No = 1
- 줄 수 = 100줄 (numOfRows)
- 응답 형식 = JSON (returnType)
- 발급받은 키 (serviceKey)
- API 버전 = 1.0
오픈 API 가이드를 읽으며 정보처리기사 시험을 준비하며 공부했던 내용이 실제로 이런식으로 적용되는구나 싶기도 했다.