본문 바로가기

네트워크/기초

API

API(Application Programming Interface)

애플리케이션 프로그래밍 인터페이스, 응용 프로그램 인터페이스는 응용 프로그램에서 사용할 수 있도록 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻합니다. 주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공합니다.

REST API

REST는 "Representational State Transfer"의 약자로, 웹에서 사용되는 모든 자원을 HTTP URI로 표현하고, HTTP Method를 통해 요청과 응답을 정의하는 방식을 말합니다. REST API를 사용한다는 것은, REST 아키텍처의 제약 조건을 준수한다는 말입니다.

REST API 디자인

REST API는 공식적으로 정해진 뚜렷한 규격이 없습니다. 그렇다 보니, 개발자에 따라 REST API 특징(원칙)에 맞춰 조금씩 다른 모습을 하고 있습니다.

위 API 작성 가이드를 참고한다면, 모범적인 API 디자인에 가깝게 코드를 작성할 수 있습니다.

REST API 설계시 가장 중요한 두 가지

  • URI는 정보의 리소스를 표현합니다.
  • 리소스에 대한 상태 정의는 HTTP method(GET, POST, PUT, DELETE...)로 표현합니다.
요청 적절한 메소드
조회 (Read) GET
추가 (Create) POST
갱신 (Update) PUT 또는 PATCH
삭제 (Delete) DELETE

OPEN API

글자 그대로 누구에게나 열려있는 API입니다. 그러나 "무제한으로 이용할 수 있다"는 의미는 아닙니다. 기관이나 API마다 정해진 이용 수칙이 있고, 그 이용 수칙에 따라 제한사항(가격, 정보의 제한 등)이 있을 수 있습니다.

API Key

API를 이용하기 위해서는 API Key가 필요합니다. API key는 서버의 문을 여는 열쇠라고 생각할 수 있습니다. 클라이언트의 요청에 따라 서버에서 응답한다는 말은 결국 서버를 운용하는 데에 비용이 발생한다는 말입니다. 따라서 서버 입장에서 아무런 조건 없이 익명의 클라이언트에게 데이터를 제공할 의무도, 이유도 없습니다.(가끔 API key가 필요하지 않은 경우도 있습니다.)
그래서 로그인된 이용자에게만 자원에 접근할 수 있는 권한을 API Key의 형태로 제공하고, 데이터를 요청할 때 API key를 같이 전달해야만 원하는 응답을 받을 수 있습니다.

HTTP API 테스트 도구

웹 개발에서 사용하는 대표적인 클라이언트는 브라우저입니다. 브라우저는 서버에 HTTP 요청을 보낼 수 있는 훌륭한 도구이지만, 주로 웹 페이지를 받아오는 GET 요청에 사용합니다. 브라우저의 주소창에 URL을 입력하면, 해당 URL의 root-endpoint로 GET 요청을 보냅니다. 테스트를 위해 GET이 아닌 다른 요청을 보내려면, 개발자 도구의 콘솔 창에서 내장 함수 fetch를 사용해야 합니다.

매번 코드를 작성할 수는 있습니다. 그러나 테스트를 위해 매번 코드를 작성하는 건 상당히 번거로운 작업입니다. 매번 코드를 작성하는 것 대신에, HTTP 요청을 테스트할 수 있는 다양한 도구가 있습니다. 많은 API가 HTTP 프로토콜을 이용하므로, API 테스트 도구라고 부릅니다. 이러한 API 테스트 도구는 클라이언트 입장에서 서버 API를 테스트하거나, API를 만드는 과정에서도 매우 유용합니다.

 

HTTP API 테스트 도구 (CLI)

  • curl (대부분의 리눅스 환경에 내장되어 있습니다.)
  • wuzz

HTTP API 테스트 도구 (GUI)

반응형

'네트워크 > 기초' 카테고리의 다른 글

Cookie  (0) 2021.09.11
Hashing  (0) 2021.09.10
HTTPS  (0) 2021.09.10
URL & URI  (0) 2021.08.20
[HTTP/네트워크] 클라이언트 - 서버  (0) 2021.08.20