REST API란
- REST API 에서 REST는 Representational State Transfer 의 약자로 소프트웨어 프로그램 아키텍처의 한 형식 입니다.
- 자원을 이름 (자원의 표현) 으로 구분하여 해당 자원의 상태 (정보)를 주고 받는 모든 것을 의미한다.
- 월드 와이드 웹 (WWW) 과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 개발 아키텍처의 한 형식
- REST는 기본적으로 웹의 기존 기술과 HTTP 프로토콜을 그대로 활용하기 때문에 웹의 장점을 최대한 활용할 수 있는 아키텍처 스타일이다.
- REST API라는 개념을 한줄로 정의하면 HTTP 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 HTTP Method로
표현하여 특정한 형태(JSON)로 전달하는 방식이다.
REST API 탄생 배경
- REST API의 등장은 2000년도에 HTTP의 주요 저자 중 한 사람인 로이 필딩이 그 당시 웹 설계의 우수성에 비해 제대로 사용되어지지 못하는 모습에 안타까워하며
- 웹의 장점을 최대한 활용할 수 있는 Architecture로써 REST를 발표 했습니다
REST API를 사용하는 이유
-평생 혼자 개발할 것이라면 굳이 Rest API의 규칙을 사용해서 만들지 않아도 되지만 우리는 협업을 하거나 다른 사람에게 인수인계를 해줘야 할일이 생긴다. 그럴 때 내가 작성한 URI를 다른 개발자가 보아도 알 수 있도록 누군가가 정한 표준 형식이 필요하다 만약 이 형식 없이 중구난방으로 위의 그림처럼 짠다면 나포함 나와 함께 일하는 사람 모두가 힘들어진다. 그래서 최종적으로 URI만 보더라도 이 URI가 어떠한 요청을 하는지를 알아볼 수 있게 작성함으로써 유지보수와 관리가 용이하게 하기 위해서이다.
핵심 규칙
REST에서 가장 중요하며 기본적인 규칙은 아래 두 가지 입니다
- URI는 정보의 자원을 표현해야 한다 ex(GET /cats/tom -> 고양이 중에 Tom이라는 고양이를 조회
- 자원에 대한 행위는 HTTP Method (GET, POST, PUT, DELETE 등)으로 표현한다
ex) 코난이라는 강아지의 정보를 가져오는 메서드
GET /pets/conan
Response
{
"name": "conan",
"age": 4,
"gender": "male"
}
첫 번째 규칙인 URI는 모든 자원을 표현한다, 위 예시의 경우 강아지인 코난 이라는 자원을 URI 로 표현했습니다. /pets/conan
두 번째 규칙인 자원에 대한 행위는 HTTP method 로 표현한다., 위 예시에선 정보를 가져오는 행위인 GET 를 사용했습니다.
세부 규칙
1. 슬래시 구분자 ( / )는 계층 관계를 나타내는데 사용한다.
2. URI 마지막 문자로 슬래시 ( / )를 포함하지 않는다.
- 즉 URI에 포함되는 모든 글자는 리소스의 유일한 식별자로 사용되어야 하며 URI가 다르다는 것은 리소스가 다르다는 것
- 역으로 리소스가 다르면 URI도 달라져야 한다.
3. 하이픈 ( - )은 URI 가독성을 높이는데 사용한다.
4. 밑줄 ( _ )은 URI에 사용하지 않는다.
5. URI 경로에는 소문자가 적합하다.
- URI 경로에 대문자 사용은 피하도록 한다.
6. 파일확장자는 URI에 포함하지 않는다.
- REST API 에서는 메시지 바디 내용의 포맷을 나타내기 위한 파일 확장자를 URI 안에 포함시키지 않는다.
- 대신 Accept Header 를 사용한다.
- ex) GET: http://restapi.exam.com/orders/2/Accept: image/jpg
7. 리소스 간에 연관 관계가 있는 경우
- /리소스명/리소스ID/관계가 있는 다른 리소스 명
- ex) GET: /users/2/orders (일반적으로 소유의 관계를 표현할 때 사용)
HTTP Method의 종류
PATCH | 리소스의 일부를 수정
Q) URI 과 URL의 차이점은?
URL은 Uniform Resource Locator로 인터넷 상 자원의 위치를 의미합니다. 자원의 위치라는 것은 결국 어떤 파일의 위치를 의미합니다. 반면에 URI는 Uniform Resource Identifier로 인터넷 상의 자원을 식별하기 위한 문자열의 구성으로, URI는 URL을 포함하게 됩니다. 그러므로 URI가 보다 포괄적인 범위라고 할 수 있습니다.
참고
https://kiwinam.com/posts/34/what-is-rest-api/
https://mangkyu.tistory.com/46
https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80
https://www.youtube.com/watch?v=4DxHX95Lq2U
'기술 공부 정리' 카테고리의 다른 글
WEBRTC 공부한 것 정리 (0) | 2022.02.02 |
---|
댓글