미누에요
REST , REST API, RESTful API 본문
728x90
반응형
SMALL
개발을 하다보면 REST API라는 용어를 많이 보게 된다.
나도 이때까지 무슨 API인지 제대로 모르고 있었는데, 이번 기회에 정리해보고자 한다.
REST가 뭔가 ?
REST(Representational State Transfer)는 자원을 이름으로 구분하고, 해당 자원을 주고받는 것을 의미한다.
여기서 자원은 그림, 이미지, 텍스트 등을 의미하고, 그 자원의 이름으로 해당 자원을 표현하게 된다.
- 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- 기본적으로 웹과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대로 활용할 수 있음
- 모든 자원에 고유한 URI 가 등록됨
REST 의 구성 요소
- 자원(Resources) : 각 자원들은 고유한 HTTP URI를 가지고 있으며, 해당 URI를 의미한다.
- Client는 해당 URI로 자원에 대한 조작을 요청한다.
- 행위(Verb) : HTTP Method
- GET, POST, PUT, DELETE 가 존재한다.
- 표현(Representation of Resource)
- Client에서 요청하면 서버가 응답을 줘야하는데, 응답을 어떤 형태로 주는지에 대한 내용이다.
- 주로 JSON, XML을 사용한다. (요즘은 거의 다 JSON 사용)
REST API가 뭐냐 ?
REST API는 REST를 만족시키는 방식으로 설계된 API이다.
- API : 데이터를 사용하기 위해 서버 측에서 제공하는 인터페이스, 은행 직원 같은 개념이다.
REST API 설계 규칙
- URI는 정보의 자원을 표현해야 한다.
- resource는 동사보다는 명사를, 대문자보다는 소문자를 사용한다.
- resource의 도큐먼트 이름으로는 단수 명사를 사용해야 한다.
- resource의 컬렉션 이름으로는 복수 명사를 사용해야 한다.
- resource의 스토어 이름으로는 복수 명사를 사용해야 한다.
- Ex) GET /Member/1 -> GET /members/1
- 자원에 대한 행위는 HTTP Method(GET, PUT, POST, DELETE 등)로 표현한다.
- URI에 HTTP Method가 들어가면 안된다.
- Ex) GET /members/delete/1 -> DELETE /members/1
- URI에 행위에 대한 동사 표현이 들어가면 안된다.(즉, CRUD 기능을 나타내는 것은 URI에 사용하지 않는다.)
- Ex) GET /members/show/1 -> GET /members/1
- Ex) GET /members/insert/2 -> POST /members/2
- 경로 부분 중 변하는 부분은 유일한 값으로 대체한다.(즉, :id는 하나의 특정 resource를 나타내는 고유값이다.)
- Ex) student를 생성하는 route: POST /students
- Ex) id=12인 student를 삭제하는 route: DELETE /students/12
- URI에 HTTP Method가 들어가면 안된다.
RESTful API는 또 뭐냐 ??
REST API의 설계 원칙에 맞게 API를 작성한 경우, 그 API를 RESTful하다고 표현할 수 있다.
공식적인 표현이 아니라, 사람들이 흔히 사용하는 표현이라고 생각해두자.
또한, 모든 API가 RESTful한 API는 아니라는 것도 알아두자!
참고 자료 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html#google_vignette
[Network] REST란? REST API란? RESTful이란? - Heee's Development Blog
Step by step goes a long way.
gmlwjd9405.github.io
728x90
반응형
LIST
'개발이야기' 카테고리의 다른 글
[CSS] rem이 왜 반응형이지 ? (0) | 2025.04.08 |
---|---|
[TypeScript] type과 interface는 뭐가 다른건데! (0) | 2025.03.25 |
[TypeScript] 왜 TypeScript를 사용하는걸까 ? (0) | 2025.03.14 |
공유하기 기능 구현하기 (Web Share API) (0) | 2025.03.07 |
OG태그가 뭘까 ? (0) | 2025.03.05 |