REST API 전에 REST란 무엇인지에 대해 먼저 알아볼 필요가 있다.
만들어진 계기
REST(REpresentational State Transfer)는 HTTP(웹)의 주요 저자 중 한 사람인 로이 필딩이라는 사람이 만들었는데 자기가 봐도 너무 잘 만든 HTTP를 사라들이 사용을 안하니까 제발 좀 사용하라고 보조기구?처럼 만든 HTTP 의 장점을 최대로 활용할 수 있는 아키텍처다.
정의
자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태/정보를 주고받는 모든 것을 의미한다.
즉 자원(resource)의 표현(representation)을 기반으로 한 상태(정보)전달을 의미한다.
구체적으로는 HTTP URI를 통해 자원을 명시하고 , HTTP Method를 통해 해당 자원에 대한 CRUD를 적용하는 것을 의미한다.
- 자원(resource) : 프로그램이 관리하는 모든 것
- 이미지 , 문서 , 텍스트 데이터 , 해당 프로그램 그 자체 등등
- 자원의 표현 : 그 자원을 표현하기 위한 이름
- DB의 학생 데이터가 자원이라면 → "students" (자원의 표현)
- 상태/정보 전달
- 클라이언트에서 요청되는 데이터를 전달한다. 일반적으로 JSON 또는 XML을 통해 데이터를 주고받는다.
특징
HTTP프로토콜을 그대로 활용하기 때문에 계기에서도 말했듯 HTTP 의 장점을 최대로 활용할 수 있는 아키텍처다.
구성요소
- 자원(Resource): URI
- Client가 URI를 이용해서 자원의 지정하고 , 해당 자원의 상태/정보에 대한 조작을 Server에 요청한다.
- 행위(Verb): HTTP Method
- HTTP프로토콜을 그대로 활용하기 때문에 GET,POST,PUT,DELETE와 같은 메소드를 제공한다.
- 표현(Representation of Resource)
- REST에서 하나의 자원은 JSON, XML, TEXT, RSS 등 여러 형태의 표현(Representation)으로 나타내어 질 수 있다.일반적으로 JSON , XML 형태가 데이터를 주고 받을 때 많이 사용된다.
이제 REST API가 무엇인지 알아보자
먼저 API(Application Programming Interface)란
정의 및 규칙(프로토콜) 집합을 사용해 서로 다른 프로그램의 각각의 구성요소가 서로 통신할 수 있게 하는 매커니즘이다.
그렇다면 REST API란?
REST를 기반으로 구현한 API를 의미한다. 또한 자원(resource)의 웹상의 주소를 나타내는 문자열인 URL을 더 효율적이고 클린하게 작성하기 위해 생긴 방법론 중에 하나라고도 할 수 있다.
이를 위해서는 몇가지 규칙을 지켜야 한다.
- URI는 동사보다 명사를 , 대문자보다는 소문자를 사용해야 한다.
- 마지막에 " / "는 포함하지 않는다.
- 언더바(_) 대신 하이폰(-)을 사용한다.
- 파일확장자(.뒤에 붙는 것)는 URI에 포함하지 않는다.
- 행위(HTTP Method)는 포함하지 않는다.
- URI에 작성되는 영어를 복수형으로 작성한다.
- 전달하고자 하는 자원의 명사를 사용하되, 컨트롤 자원을 의미하는 경우 예외적으로 동사를 허용한다.
'CS' 카테고리의 다른 글
DTO , VO , Entity의 간단한 정리 및 비교 (0) | 2023.04.16 |
---|---|
URI 와 URL (0) | 2023.04.14 |
자주 사용되는 spring anotation 10가지 (0) | 2023.04.13 |
HTTP와 HTTP method (0) | 2023.04.12 |
controller , service , repository (0) | 2023.04.08 |