[TIL] RESTful하다?

woonie·2022년 2월 10일
0

TIL

목록 보기
26/64
post-thumbnail

항해 30일차

REST API란?

REST API는 정보들을 주고 받는데 있어 개발자들 사이에 널리 쓰여지는 일종의 형식이다.
어떤 학원에서 학원을 관리하기 위한 API들을 만든다고 하자.
사실 REST API는 지켜줬으면 하는 형식이고 약속일 뿐이므로 REST API를 고려하지 않고 서비스를 만들어도 된다.

(REST 하지 않은 예시1)

이런 식으로 URI를 원하는 단어 아무거나 써서 만들어도 내가 구분해서 쓸 수만 있으면 서비스 기능 자체에는 문제가 없다.
하지만 한 서비스를 여러 개발자가 만드는 일이 많고 내가 혼자 만든 API를 다른 사람이 이용하게 되는 일도 생긴다.
이 때 위 방식처럼 요청하고자 하는 내용이랑 전혀 상관없는 쌩뚱맞은 URI를 설정해놓으면 이게 뭘 하는 요청인지 알기 힘들다.

(restful 하지 않은 예시2)

이름을 대충 알아들을 수 있게 calss, room, time 등을 사용하더라도 이렇게 마구잡이로 URI를 쓰게 되면
똑같은 보여달라는 요청도 언제는 get, read로 다르게 쓰거나 수정요청도 update, edit 등으로 쓸 수 있고
여전히 어떤 요청인지 한 눈에 파악하기가 어렵다.

이걸 잘 정리한 규칙이 REST API이다.

REST API를 설계할 때 가장 중요한 규칙은 다음 두 가지이다.
1. URI는 정보의 자원(resource)을 표현해야 한다.
2. 자원에 대한 행위는 HTTP Method로 표현한다.

1. URI는 정보의 자원을 표현해야 한다.

여기서 자원(resorce)란 우리가 다루는 데이터를 의미하는 단어이다.

URI는 동사가 아니라 명사로 이루어져야한다.

즉 URI에 getclasses, deletestudent처럼 동사가 들어가면 안되고 classes, student와 같은 명사만 들어가야 한다.
이 때 이 명사 정보는 collection와 element로 나눠볼 수 있는데
예를 들어
이 반 리스트 전체가 컬렉션이고
이게 위 컬렉션의 한 요소(element)이다.
컬렉션은 복수형으로 쓰고 요소는 보통 id숫자로 나타내거나 단수형으로 쓴다.
이 때 계속 등장하는 URI라는 단어가 있는데 자원을 구조와 함께 나타내는 이런식의 구분자를 URI라고 한다.

2. 자원에 대한 행위는 HTTP Method로 표현한다.

우리가 다루고자 하는 자원의 정보는 1.에서 말한 법칙대로 URI에 나타내면 된다.
이제 우리는 이 자원을 조회할건지 저장할건지 수정할건지 삭제할건지도 알려줘야 한다.
즉 CRUD(Create, Read, Update, Delete)에 대한 정보도 전달을 해야 한다.
REST API에서는 이런 CRUD를 메소드라고 부르고
REST API는 웹의 통신 규약인 HTTP를 이용하기 때문에 HTTP의 메소드를 사용한다.
HTTP 요청을 할 때에는 여러 메소드가 있지만
REST API에서는 이 중에서 GET, POST, PUT, DELETE를 쓰고 추가적으로 PATCH도 쓴다.
사실 이것들의 기능이 특정 용도에 제한되어 있는 것이 아니기 때문에 POST 하나로도 CRUD를 다 구현할 수 있다.
하지만 누구든 이 API의 의도를 쉽게 파악할 수 있도록 하기 위해서는 이것들을 목적에 따라 구분해서 사용해야 한다.

결론

REST API는 HTTP 요청을 보낼 때 어떤 URI에 어떤 메소드를 사용할지 개발자들 사이에 널리 지켜지는 약속이다.
우리는 API를 한 눈에 파악하고 이후에도 유지보수하기 쉽도록 REST API를 잘 설계해야 한다.

참고자료 : https://youtu.be/iOueE9AXDQQ

profile
동료들과 함께하는 개발의 중요성에 관심이 많습니다. 언제나 호기심을 갖고 꾸준히 노력하는 개발자로서 성장하고 있습니다.

0개의 댓글