Representational State Transfer (대표 상태 전송)
자원을 이름으로 구분하여 해당 자원의 상태 및 정보를 주고받는 모든 것을 의미한다.
HTTP URI를 통해 자원을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.
자원이란 ?
해당 소프트웨어가 관리하는 모든 것을 말하며, 문서, 그림, 데이터, 소프트웨어 자체 등이다.
이러한 자원을 주고받을 때, 구분하기 위해 표현을 한다. 자원 구분은 HTTP URI를 통해 명시한다. (HTTP URI는 고유키 같은 느낌이라고 생각하면 될 것 같다.)
상태 및 정보
데이터가 요청되면 자원의 상태(정보)를 전달한다. JSON 또는 XML을 통해 데이터를 주고받는 것이 일반적이다.
REST기반으로 서비스 API를 구현한 것
최근 OpenAPI(누구나 사용할 수 있도록 공개된 API: 구글 맵, 공공 데이터 등), 마이크로 서비스(하나의 큰 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개어 변경과 조합이 가능하도록 만든 아키텍처) 등을 제공하는 업체 대부분은 REST API를 제공한다.
API (Application Programming Interface)
컴퓨터나 컴퓨터 프로그램 사이의 연결이다. 즉, 쓰기 쉽도록(컴퓨터와 연결하기 쉽도록) 인터페이스를 만들었다고 생각하면 될 것 같다.
REST API 설계 시 가장 중요한 항목
ex)
회원정보 가져오는 URI : GET /members/1
회원 추가 : POST /members/2
잘 설계된 API는 URI만 잘 설계된 것이 아닌 그 리소스에 대한 응답을 잘 내어주는 것까지 포함되어야 한다. 정확한 응답의 상태코드만으로도 많은 정보를 전달할 수가 있기 때문에 응답의 상태코드 값을 명확히 돌려주는 것은 생각보다 중요한 일이 될 수도 있다.
‘REST API’를 제공하는 웹서비스를 ‘RESTful’하다고 할 수 있다.
일반적으로 REST라는 아키텍처를 구현하는 웹서비스를 나타내기 위해 사용되는 용어이다.
DRF
(장고를 공부하면 자연스레 DRF도 듣게 될 것이다. DRF는 Django REST Framework이며, 장고가 RESTful API를 쉽게 구축하도록 도와준다. 이것은 굉장히 편리하다. 장고에서 view를 만들고 url에 등록을 하면 localhost:8000/등록한url 이 REST API이다. 직접 url을 입력하여 화면에서 볼수도 있다. 어떤 메서드가 사용가능한지, 어떤 필드가 필요한지, 어떤 데이터가 있는지 보여주며 해당 api에서 추가/수정/삭제도 가능하다. 프론트에서는 만들어진 URI를 통해 접근하여 자원에 대한 행위를 한다.)
[참고자료1](https://gyoogle.dev/blog/web-knowledge/REST API.html)
참고자료2
참고자료3