
교안: 공봉식, <Tucker의 Go 언어 프로그래밍>, 2021
Tucker Programming 유튜브 Link
교안 Github Link
REST는 자원을 이름으로 구분하여 자원 상태(정보)를 주고받는 소프트웨어 아키텍처
RESTful API는 REST 규약을 따르는 API
URL과 메서드를 사용해 데이터와 동작을 정의하기 때문에 어디서나 동일한 방식으로 데이터 처리 가능
프론트엔드와 백엔드가 분리되면서 자연스럽게 RESTful API가 보편화되었고, 데이터 프로바이더로서 웹 서버 역할 중요해짐
RESTful API를 사용하면 여러 서버가 동일한 인터페이스로 통신할 수 있어서 수많은 웹 서버로 웹 서비스 구성하기 쉽다
그로 인해 장애에 더욱 유연하게 대응할 수 있고 손쉽게 유지보수할 수 있다
RESTful API 서버
REST는 URL과 메서드로 데이터와 동작을 표현하는 방식
GET https://somesite.cpm/students/3
3번 학생 데이터를 가져오는 요청이라는 것을 유추할 수 있다HTTP는 GET, POST, PUT, DELETE, PATCH 같은 메서드를 지원한다
GET /students : 전체 학생 데이터 반환
GET /students/id : id에 해당하는 학생 데이터 반환
POST /students : 새로운 학생 등록
PUT /sudents/id : id에 해당하는 학생 데이터 변경
DELETE students/id : id에 해당하는 학생 데이터 삭제
위와 같이 URL과 메서드의 조합으로 데이터와 동작을 정의할 수 있다.
어떤 환경에서도 똑같이 메서드와 URl만 조합해서 요청을 만들 수 있기에 범용적으로 사용할 수 있다는 장점이 있다
자기 표현적인 URL
: URL만으로도 어떤 데이터에 대한 요청인지 알 수 있다
메서드로 행위 표현
: 메서드로 데이터에 대한 행위를 표현한다. URL과 메서드 조합으로 데이터에 대한 조작을 정의한다.
서버/클라이언트 구조
: 서버는 데이터 제공자로, 클라이언트는 데이터 사용자로 동작한다. 프론트와 백엔드로 분리하고, 백엔드는 데이터만 제공하고, 프론트에서 데이터를 처리하고 화면에 표시하는 역할을 한다.
무상태 stateless
: 서버는 클라이언트의 상태를 유지하지 않는다. 서버가 상태를 보관할 필요가 없기 때문에 서버를 손쉽게 교체할 수 있어서 빠른 장애 대응이나 분산 처리에 유용하다.
캐시 처리
: REST 구조로 서버가 단순해져서 더 쉽게 캐시 정책을 적용해서 성능을 개선할 수 있다.