API는 응용 프로그램(애플리케이션)에서 운영 체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다
주로 파일 제어, 창 제어, 화상 처리, 문자 제어 등을 위한 인터페이스를 제공한다
API는 중간에서 연결시켜주는 다리 역할을 하며,
애플리케이션과 운영체제 그리고 애플리케이션과 프로그래밍 언어가 제공하는 기능 사이의 '상호 작용'을 도와준다
웹은 기본적으로 요청(request)과 응답(response)으로 작동한다
클라이언트쪽에서 요청을 하면 서버에서 응답을 하는것이며,
웹 API는 웹 애플리케이션 개발을 할때 클라이언트와 서버, 애플리케이션과 애플리케이션등 서로 요청과 응답을 주고 받기 위해서 정의한 API다
예를 들어서 블로그에 글을 써서 올린다고 하면 글을 쓰고, 출간하기,저장하기와 같은 버튼을 클릭해야 한다,
이 버튼을 누르면 연결된 API에 따라 서버에 글이 저장되며, 만약 구글 지도 API를 사용하면 구글 지도 웹사이트(https://www.google.com/maps)에 접속하지 않아도 구글 지도를 사용할 수 있다
서버와 데이터베이스안의 리소스에 접근할 수 있게 해준다
데이터베이스의 정보를 누구나 열람하면 곤란 할 것이다, 필요에 의해서만 열람되어야 하며, API는 접근 권한이 인가된 사람에게만 서버와 데이터베이스에 접근할 수 있게 한다
모든 요청과 응답을 표준화 한다
애플의 아이폰을 쓰던 삼성의 갤럭시폰을 쓰던 상관없이 동일한 API를 사용하기 때문에 클라이언트의 요청과 서버의 응답을 하나의 API로 표준화 한다
REST API(REpresentational State Transfer)는 웹상에서 사용되는 여러 리소스를 HTTP URI로 표현하고, 해당 리소스에 대한 행위를 HTTP Method로 정의하는 방식을 말한다
리소스에 대한 행위는 HTTP Method(POST, GET, PUT, DELETE)로 표현해야 한다
/(슬래시)는 계층 관계를 나타낼때 사용한다
URI 마지막 문자에 /(슬래시)를 사용하지 않는다
URI에 _(underscore)는 사용하지 않도록 한다, 또한 영어 대문자보다는 소문자를 쓴다
그리고 가독성을 위해서 긴 단어는 잘 사용하지 않는다
URI에 동사는 GET, POST와 같은 HTTP Method를 표현하기 때문에 동사가 아니라 명사를 사용한다
URI에 파일의 확장자(예를들어 .json , .JPGE)를 포함 시키지 않는다
RESTful API는 REST API 설계 가이드를 따라 API를 만드는것 이다
REST API 설계 가이드에 따라 API를 만들어서 웹 서비스를 제공하면 해당 웹 서비스는 RESTful하다고 한다