API는 Application Programming Interface의 약자이다.
대체로 클라이언트(프론트)와 서버(백)이 통신 할 떄 나오는 말로 클라이언트에서 요청을 보내면 서버에서 응답을 해주는 해주는 주고받는 메커니즘 정도로 생각하면 된다.
RESTful API는 Representational State Transfer 의 줄인 말로 HTTP 메소드를 사용하여 클라이언트와 서버가 데이터를 주고 받게 된다.
결국 하나의 API 아키텍처 정도로 설명할 수 있겠다.
먼저 REST의 구성을 살펴 보자면
정도로 구성이 되어 있다.
GET /item/1
대충 이런 식으로 작성 할 수 있겠다.
HTTP Method로 사용 간단하게 사용하기도 편하고 다른 개발자가 URI을 확인 할 때 한번에 이해 할 수가 있게 된다.
GET /item/1
위 예시를 본다면 어떠한 데이터인지는 자세하게 모르지만 고유한 값(id)이 1
인 item
이라는 녀석을 GET
하여 받아 온다는 것을 단번에 알 수 있다.
즉 뛰어난 가독성과 간단한 사용 방법이 가장 큰 장점이다.
그렇다고 단점이 없지는 않다.
아직까지 RESTful API의 표준이 정의되지 않았다.
그렇기에 공식화 된 API 디자인 가이드가 없어 개인마다 혹은 회사마다 표준이 다르기 때문에 만약 협업을 한다면 서로의 약속이 필요로 할 것이다.
앞서 설명했듯이 RESTful API는 HTTP Method를 사용하는 방식이라고 했다.
그렇다면 이 Method들은 어떠한 것이 있는가 ?
GET
: 서버의 데이터를 받아 올 수만 있다.POST
: 클라이언트에서 서버로 데이터를 전달(생성)한다.PUT
: 데이터를 업데이트하기 위해 사용한다.PATCH
: PUT과 같이 업데이트를 위해 사용하지만 데이터의 일부만 업데이트 할 때 사용한다.DELETE
: 데이터를 삭제할 때 사용된다.일명 CRUD라고 하여 Creat(POST), Read(GET), Update(PUT), Delete(DELETE)의 역활을 수행하는 메소드들이다.
앞서 RESTful의 표준이 없다고 설명을 했는데
이는 완전히 규칙이 없다는 것을 의미하진 않는다.
RESTful API URI의 몇 가지 규칙들을 살펴보자.
소문자를 사용한다.
대문자가 에러를 발생하는 일이 종종 있다고 한다.
그렇기 때문에 소문자를 사용한다.
O
: http://restful.com/item-list
X
: http://restful.com/itemList
언더바( _ ) 대신 하이픈( - )을 사용한다.
언더바 문자가 가려지거나 가독성이 떨어지므로
하이픈을 사용한다.
O
: http://restful.com/item-list
X
: http://restful.com/item_list
URI의 끝에 슬래시( / )를 넣지 않는다.
끝에 슬래시를 넣는 것은 의미가 없고 다른 사람들에
혼란을 줄 수 있기 때문에 빼주도록 한다.
O
: http://restful.com/item-list
X
: http://restful.com/item-list/
슬래시는 계층 구조에서 사용한다.
계층 관계일 때 슬래시를 사용하여 표시한다.
HTTP Method는 URI에 넣지 않는다.
URI에 Method를 적어 전달하지 않는다.
O
: http://restful.com/item-list
X
: http://restful.com/get-item-list
파일 확장자는 URI에 적지 않는다.
jpg, json과 같은 파일 확장자는 URI에 적지 않는다.
O
: http://restful.com/item-list/item/1
X
: http://restful.com/item-list/item/1.jpg
전달하는 데이터는 명사로, 하지만 동작을 의미하면 동사를 허용할 수 있다.
예를 들어 중고 물품의 설명을 작성하는 데이터라면 동사로 적어도 상관이 없다.
O
: http://restful.com/item-list/item/write
X
: http://restful.com/item-list/item/writing
URI에 작성되는 영어를 복수형으로 작성해도 된다.
URI의 형식을 복수형으로 사용하는 것 또한 실무에선 사용된다고 한다.
아이템에 들어간 모든 재료들을 검색
http://restful.com/item-list/item/1/ingredients
재료들 중 철을 검색
http://restful.com/item-list/item/1/ingredients/steel
이미 RESTful을 사용 해보았지만
왜 채용 공고에서 RESTful 지식을 요구하는지 ?
또 다들 왜 RESTful을 사용하는지 ? 에 대한 궁금함이 생겼다.
그렇게 장단점을 찾아보고 사용법과 중요한 규칙들을 다시 한번 알게 해주는 시간이였다.
나중에 기회가 된다면 GraphQL도 사용을 해보고
RESTful과 비교하는 글도 올리도록 하겠다.