API는 Application Programming Interface(애플리케이션 프로그램 인터페이스)의 줄임말이다. 정의 및 프로토콜 집합을 사용하여 두 소프트웨어 구성요소가 서로 통신할 수 있게 하는 메커니즘이다.
API의 맥락에서 어플리케이션은 고유한 기능을 가진 모든 소프트웨어를 나타낸다.
인터페이스는 두 어플리케이션 간의 서비스 계약이라고 할 수 있다. 데이터를 주고 받기 위한 방법으로, 어떠한 데이터를 제공 받을 수 있는지에 대한 규격들을 API라고 한다.
웹 API는 클라이언트와 웹 리소스 사이의 게이트 웨이라고 생각할 수 있다.
API는 사용법과 용도에 따라 오픈, 비공개 API가 있다. 오픈 API는 누구나 쉽게 접근하여 정보를 공유할 수록 만들어진 규격이고, 비공개 API는 권한있는 일부 사용자들에게만 정보를 제공하기 위해 만들어진 규격이다.
오픈 API를 제공하는 이유는, 자사 서비스의 기능을 다양한 서비스에서 활용할 수 있도록 유도해 서비스 저변을 넓히는 데에 목적이 있다. (예: 카카오 API에서 제공하는 로그인, 소셜, 메세지, 지도 등...)

구체적인 개념으론 HTTP URI(Uniform Resource Identifier)을 통해 자원(Resource)를 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
Representational State Transfer의 약자로 자원을 이름으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉,자원(resource)의 표현(representation)에 의한 상태 전달이다.
월드 와이드 웹(www)와 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식으로, REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 스타일이다.
즉, REST는 자원 기반의 구조(ROA,Resource Oriented Architecure) 설계의 중심에 Resource가 있고 HTTP Method를 통해 Resourece를 처리하도록 설계된 아키텍쳐를 의미한다.
웹 사이트의 이미지, 텍스트, DB 내용 등의 모든 자원에 고유한 ID인 HTTP URI를 부여한다.
* CRUD Operation이란?
Create: 생성(POST)
Read : 조회(GET)
Update : 수정(PUT)
Delete : 삭제(DELETE)
HEAD: header 정보 조회(HEAD)
REST 기반으로 서비스 API를 구현한 것. 최근 Open API,마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍쳐) 등을 제공하는 업체 대부분은 REST API를 제공한다.
특징
REST API 설계 기본 규칙
1. URI는 정보의 자원을 표현해야한다. (명사, 소문자, doc은 단수, 컬렉션은 복수, 스토어는 복수)
2. 자원에 대한 행위는 HTTP Method(GET,PUT,POST,DELETE 등)로 표현한다.
3. 슬래시 구분자(/ )는 계층 관계를 나타낼 때 사용.
4. URI 마지막 문자로 슬래시(/ ) 포함하지 않는다.
5. 하이픈( - )은 URI 가독성을 높이는데 사용
6. 밑줄(_ )은 URI에 사용하지 않는다.
7. URI 경로에는 소문자가 적합하다.
8. 파일 확장자는 URI에 포함하지 않는다.
9. 리로스 간에 연관 관계가 있는 경우
URI (Uniform Resource Identifier)
리소스를 고유하게 식별하는 일반적인 방법으로, URI는 URL의 상위개념이다.자원을 식별하는 방법에 대한 일반적인 규칙을 정의한다.
URL (Uniform Resource Locator)
인터넷 상의 리소스의 위치를 나타내는 특별한 형태의 URI이다. URL은 리소스의 위치를 포함하고 있으며, 주로 웹페이지, 이미지, 동영상 등의 웹 리소스를 가리킨다. URL은 프로토콜(일반적으로 HTTP, HTTPS), 호스트명, 파일 경로 등의 구성 요소로 구성된다.
모든 URL은 URI이지만, 모든 URI는 URL이 아니다. URI는 리소스를 식별하는데 필요한 모든 형태의 식별자를 포함할 수 있지만, URL은 리소스의 위치를 명시적으로 지정하는 형태의 URI이다.
일반적으로 REST라는 아키텍쳐를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어로, 'REST API'를 제공하는 웹 서비스를 'RESTful'하다고 할 수 있다.
이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것으로, 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 목이다.