TIL no.59 - Back End - RESTful API란?

박준규·2019년 10월 24일
1

1. REST

httpie를 이용해 요청을 보내고 응답을 받는 것을 한번 해보았는데
이 과정에서 우리는 알게 모르게 REST를 사용했습니다.

알게 모르게라고 표현한 이유는
그만큼 REST가 직관적이고 사용하기 쉽다는 뜻입니다.

REST란 “Representational State Transfer” 의 약자로서
웹상에서 사용되는 리소스를 HTTP URI로 표현하고 그 리소스에 대한 행위를 HTTP Method로 정의하는 방식입니다.

GET www.cgv.com/movies 처럼 말이죠.

www.cgv.com/movies에 GET 메서드를 보내서 우리가 원하는 정보를 얻어와라
라는 뜻입니다.

REST에 대해 좀 더 깊게 정리하면
HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고
HTTP Method(POST, GET, PUT, DELETE)를 통해
해당 자원에 대한 CRUD Operation을 적용하는 것을 의미합니다.

2. CRUD

그럼 CRUD operation이란 뭘까요?

CRUD란

Create
Read
Update
Delete
를 뜻합니다.

즉, 데이터를 생성(Create)하고 읽고(Read) 수정(Update)하고 삭제(Delete)하는 것이죠.

3. RESTful API

그럼 RESTful API란 무엇일까요?
REST방식을 사용해서 CRUD operation을 수행하는 API입니다.

Django에서 모델을 정의하고 View 로직을 구현하고 url mapping을 해주었는데
이런 과정을 API 설계라고 할 수 있습니다.

그리고 RESTful API 설계 규칙에 따라 구현한다면
유저가 이해하기 쉽게 만들 수 있습니다.

4. RESTful API 설계 규칙

  1. 슬래시 구분자(/)는 계층 관계를 나타내는데 사용한다.
    Ex) http://restapi.example.com/houses/apartments
    각 URI는 각 리소스 혹은 리소스를 나타내는 identifier를 뜻합니다.

  2. 마지막에는 슬래시(/)를 사용하지 않는다.
    분명한 URI를 만들어 통신을 해야 하기 때문에 혼동을 주지 않기 위함입니다.
    Ex) http://restapi.example.com/houses/apartments/ (X)

  3. URI 경로에는 하이픈(-)과 소문자를 사용한다.
    불가피하게 긴 URI경로를 사용하게 된다면 하이픈(-)으로 가독성을 높입니다.
    underscore(_)는 밑줄에 의해 가려질수 있기에 사용하지 않습니다.
    그리고 RFC 3986(URI 문법 형식)은
    URI 스키마와 호스트는 제외하고 대소문자를 구별하도록 규정하기 때문에
    소문자만 사용합니다.

  4. 파일확장자는 URI에 포함하지 않는다.
    Ex) http://restapi.example.com/members/soccer/345/photo.jpg (X)
    대신에 Accept Header를 사용합니다.
    Ex) GET /members/soccer/345/photo HTTP/1.1 Host: restapi.example.com Accept: image/jpg (O)

이외에도 다른 규칙들이 더 있지만 일단은 여기까지만 알아보도록 하겠습니다.

profile
devzunky@gmail.com

0개의 댓글