[CS] API, REST API란?

김진영·2022년 8월 10일
0

CS

목록 보기
1/6
post-thumbnail

📋 API, REST API란?

API (Application Program Interface)

사전적 정의는 “응용 프로그램에서 사용할 수 있도록, 운영 체제 혹은 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스”를 말한다.

쉽게 말해 응용 프로그램(Application)들이 서로 소통하기 위한 인터페이스라고 보면 된다.

여기서 인터페이스(Interface)란 서로 다른 두 개의 물체가 상호간에 정보나 신호를 주고받기 위해서 필요한 접점이나 경계면을 말한다. 즉, 상호간에 소통을 위해 만들어진 접점이라고 볼 수 있다.

인터페이스중 우리와 친숙한 것들은 키보드, 리모컨 등이 있겠다.

그렇다면 REST API는 무엇인가?


📌 1. REST API

REST API (Representational State Transfer API)

REST(Representational State Transfer)는 HTTP/1.0과 1.1의 스펙 작성에 참여하였고 아파치 HTTP 서버 프로젝트의 공동설립자인 로이 필딩 (Roy Fielding)의 2000년 논문에서 처음 소개되었다. 발표 당시의 웹이 HTTP의 설계 상 우수성을 제대로 사용하지 못하고 있는 상황을 보고 웹의 장점을 최대한 활용할 수 있는 아키텍쳐로서 REST를 소개하였고 이는 HTTP 프로토콜을 의도에 맞게 디자인하도록 유도하고 있다. REST의 기본 원칙을 성실히 지킨 서비스 디자인을 “RESTful”이라고 표현한다.

REST는 웹 서비스의 구조를 만드는 데 활용되는 패턴이고, REST API는 일종의 아키텍쳐이며, 웹을 위한 네트워크 기반 아키텍쳐라 할 수 있다.

REST는 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍쳐이다.

REST API를 구성하는 요소는 총 3가지이다.

  • 자원(Resource) : HTTP URI를 사용하여 자원을 표현
  • 행위(Verb) : HTTP Method로 행위를 표현
  • 표현(Representations) : 자원(Resource)에 대한 행위(Verb)의 내용 을 HTTP Message Payload로 표현 (응답, 결과)

📌 2. REST API 중심 규칙

  • URI는 정보의 자원을 표현해야 한다.
    리소스명은 동사보다는 명사를 사용한다. URI는 자원을 표현하는데 중점을 두어야 한다. get 같은 행위에 대한 표현이 들어가서는 안된다.

  • 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE 등)으로 표현한다.


📌 3. HTTP 메소드

HTTP 메소드 중 자주 쓰이는 3가지만 작성하겠다.

GET Method

  • 이름 그대로 어떤 데이터를 서버로 부터 받아(GET)올 때 주로 사용하는 메소드이다.
  • 데이터를 받아오기만 할 때 사용된다.
  • 가장 간단하고 많이 사용되는 HTTP 메소드 이다. (사실 우리가 웹페이지를 띄울 때 필요한 정보들을 모두 GET메소드로 요청을 보내서 받아온 응답을 화면에 띄우는 것이다.)

POST Method

  • 데이터를 생성 / 수정 할 때 주로 사용되는 메소드이다.
  • 데이터를 생성 및 수정 할 때 많이 사용되기 때문에 대부분의 경우 요청에 body가 포함되서 보내진다.

DELETE Method

  • 메소드의 이름에서 유추 가능하듯, 특정 데이터를 서버에서 삭제 요청을 보낼때 쓰는 메소드이다.

이외에도 주로 5가지의 Method(GET, POST, PUT, PATCH, DELETE)를 사용하여 CRUD를 구현한다.

CRUD는 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다.


📌 3. REST API 설계 규칙

1. 소문자를 사용한다.

대문자는 때로 문제를 일으키기도 하기 때문에 소문자를 사용한다.

2. 언더바(_)대신 하이픈(-)을 사용한다.

가독성을 위해 하이픈을 사용한다.

3. 계층관계를 나타낼 때는 슬래시(/) 구분자를 사용해야한다.

슬래시 문자는 URI의 경로 부분에서 자원 간의 계층적 관계를 나타내기 위해 사용한다.

4. URI 마지막 문자로 슬래시(/)를 포함하지 않는다.

REST API는 분명한 URI를 만들어 통신을 해야 하기 때문에 혼동을 주지 않도록 URI 경로의 마지막에는 슬래시(/)를 사용하지 않는다.

5. 파일 확장자는 URI에 포함시키지 않는다.

파일 확장자는 URI에 포함하지 말아야한다. 대신에 Content-Type 이라는 헤더를 통해 전달되는대로 미디어 타입을 사용하여 body의 콘텐츠를 처리하는 방법을 결정한다.

ex)
http://jinyoung12.com/person/data.json => X
http://jinyoung12.com/person/data => O

6. 전달하고자 하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.

ex)
http://jinyoung12.com/person/writing => X
http://jinyoung12.com/person/write => O

7. URI에 작성되는 영어를 복수형으로 작성한다.

하나의 인스턴스를 복수형으로 표시하는게 문법적으로는 맞지 않지만, URI의 형식을 복수형으로 사용하는 것이 실무에서 많이 사용되고 있다.

1개의 댓글

comment-user-thumbnail
2022년 8월 11일

👏

답글 달기