API란?
어플리캐인션 프로그래밍 인터페이스(API)는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의합니다. 다른 어플리케이션이 프로그램밍 방식으로 어플리케이션과 통신 할수 있도록 API를 표시하거나 생성합니다.
웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각 할 수 있습니다.
Rest란?
Representational State Transfer(REST)는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처 입니다.
- 자원의 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 것을 의미합니다.
- HTTP URI를 통해 자원을 명시하고 HTTP Method(POST,GET,PUT,DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
- REST는 자원 기반의 구조 설계의 중심에 리소스가 있고 HTTP Method를 통해 자원을 처리하도록 설계된 아키텍쳐를 의미한다.
REST API 설계 규칙
- 슬래시 구분자(/ )는 계층 관계를 나타내는데 사용한다.
Ex) http://restapi.example.com/houses/apartments
- URI 마지막 문자로 슬래시(/ )를 포함하지 않는다.
URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가 다르다는 것이고, 역으로 리소스가 다르면 URI도 달라져야 한다.
- REST API는 분명한 URI를 만들어 통신을 해야 하기 때문에 혼동을 주지 않도록 URI 경로의 마지막에는 슬래시(/)를 사용하지 않는다.
Ex) http://restapi.example.com/houses/apartments/ (X)
- 하이픈(- )은 URI 가독성을 높이는데 사용
불가피하게 긴 URI경로를 사용하게 된다면 하이픈을 사용해 가독성을 높인다.
- 밑줄(_ )은 URI에 사용하지 않는다.
밑줄은 보기 어렵거나 밑줄 때문에 문자가 가려지기도 하므로 가독성을 위해 밑줄은 사용하지 않는다.
- URI 경로에는 소문자가 적합하다.
URI 경로에 대문자 사용은 피하도록 한다.
- REST API에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다.
Ex) GET / members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg (O)
- 리소스 간에는 연관 관계가 있는 경우
/리소스명/리소스 ID/관계가 있는 다른 리소스명
Ex) GET : /users/{userid}/devices (일반적으로 소유 ‘has’의 관계를 표현할 때)
RESTful Api 사용하는 이유
- RESTful은 REST원리를 따르는 시스템
- 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
정리
REST API 는 크게는 아래 2개로 구성, 각 구성마다 설계 원칙 존재
설계 원칙을 잘 지켰다면 “RESTful 하다.” 라고 표현합니다.
- (1) URI(URL) = 목적어, 자원 - 어떤 자원(Resource)에 대해
- (2) Method = 동사 - 어떤 행위(Method)를 할것인지
- (3) Representation of Resource = 표현 - JSON, XML …
RESTful 하다면 (1) URI 와 (2) Method 만 보고도 해당 API 가 어떤 역할을 하는지 바로 알수있어야 합니다.
출처