티스토리 뷰

기술 및 이슈

Restful API란?

Univdev 2020. 5. 25. 01:04

개요

아마 웹 개발자로 일을 했다면, 혹은 공부를 했다면 지나가는 길에 한 번 쯤은 Restful API가 무엇인지 들어봤을 것이다.

뜻이 뭔지 알고 있는 사람도 있을 것이고, 현재 본인이  만들고 있는 프로그램에 사용을 했음에도 불구하고 뜻을 적어보라면 못 적는 사람도 있을 것이다.

그래서 Restful API가 무엇인지 설명해보고자 한다.

자원과 행위의 표현

Restful API란 다시 말해, Resource, Verb, Representations을 말한다.

이렇게 말하면 잘 이해가 안 될 수도 있으니 예제를 보자.

예제

우리가 보통 프론트엔드를 개발하여 서버와 통신을 하고자 한다면, 해당 서버의 특정 자원을 요구하게 된다.

하지만 해당 자원을 어떤 형태로 사용할 것인지를 명시하기 위해 우리는 보통 URL을 이용하게 되는데, 만약 회원을 삭제하는 기능을 만들고자 한다면 URL을 아래와 같이 구성할 것이다.

GET /users/delete/1

누가 봐도 1번 사용자를 없앤다는 의미로 보이긴 하지만 위 방법은 틀린 방법이다.

Restful API는 명사로만 기재 되어야 하며, 위 기능을 구현한다고 하면 아래와 같이 구현해야 한다.

DELETE /users/1

DELETE는 form의 method이며, URI는 /users/1만 전달한다.

method와 URI를 사용하여 서버단에서 작업을 분리하여 구현하면 된다.

METHOD

Method는 크게 4가지가 존재한다.

GET, POST, PUT, DELETE가 있는데, GET과 POST는 많이 접해봤겠지만 PUT과 DELETE는 생소할 것이다.

위 4가지 메소드는 서버에서 처리할 작업의 유형에 따라 나뉘게 된다.

 

단순히 데이터를 SELECT 할 경우에는 GET을 사용한다.

GET /users
GET /users/1

데이터를 추가 할 경우에는 POST를 사용한다.

POST /users

데이터를 수정할 경우에는 PUT을 사용한다.

PUT /users/1

데이터를 삭제할 경우에는 DELETE를 사용한다.

DELETE /users/1

상태코드를 활용하자

Restful API를 구현할 때는 서버의 처리 결과를 컴퓨터가 알 수 있도록 반환해 줄 필요가 있다.

많은 개발자들이 서버의 응답 결과가 실패건 성공이건 연결 불량이건 상관 없이 '응답함'을 던져주는 식으로 구현하는데, 이렇게 하면 프론트엔드 개발자가 서버의 응답 여부를 식별하기도 힘들고, 서버 상태에 따라 다른 결과값을 반환하도록 구현하는 것도 어렵다.

 

예를 들어 없는 유저의 id를 호출한다고 하자, 그러면 서버에서는 클라이언트에게 돌려줄 결과 값이 없기 때문에 '그런건 없어' 라는 메시지를 전달해야 한다. 그럴 경우에는 404(Not found) 상태 코드와 함께 에러 메시지를 반환하자.

보다 다양한 상태 코드를 알고 싶다면 아래 위키피디아 문서를 참고 해보자.

https://developer.mozilla.org/ko/docs/Web/HTTP/Status

LIST