Go 30장. RESTful API 서버 만들기

wldbs._.·2024년 8월 26일
0

REST API & Go

목록 보기
4/5
post-thumbnail

교안: 공봉식, <Tucker의 Go 언어 프로그래밍>, 2021
Tucker Programming 유튜브 Link
교안 Github Link


REST는 자원을 이름으로 구분하여 자원 상태(정보)를 주고받는 소프트웨어 아키텍처

RESTful API는 REST 규약을 따르는 API

  • 웹서버에서는 URL과 HTTP 메서드로 데이터와 동작을 정의하는 방식을 의미

URL과 메서드를 사용해 데이터와 동작을 정의하기 때문에 어디서나 동일한 방식으로 데이터 처리 가능
프론트엔드와 백엔드가 분리되면서 자연스럽게 RESTful API가 보편화되었고, 데이터 프로바이더로서 웹 서버 역할 중요해짐
RESTful API를 사용하면 여러 서버가 동일한 인터페이스로 통신할 수 있어서 수많은 웹 서버로 웹 서비스 구성하기 쉽다
그로 인해 장애에 더욱 유연하게 대응할 수 있고 손쉽게 유지보수할 수 있다


RESTful API란?

RESTful API

RESTful API 서버

  • REST: Representational State Transfer, '표현식으로 데이터를 전송한다'
  • REST 설계 원칙에 입각한 시스템을 RESTful API라 부른다
  • REST는 여러 아키텍처 설계 방법을 합친 방식

REST는 URL과 메서드로 데이터와 동작을 표현하는 방식
GET https://somesite.cpm/students/3

  • URL과 메서드를 보면 -> 이 요청이 3번 학생 데이터를 가져오는 요청이라는 것을 유추할 수 있다
    • 별도 외부 지식 없이 자기 표현적으로 요청 URL을 생성하고,
    • 환경에 구애받지 않고,
    • 똑같은 요청에 대해서 똑같은 결과를 보장한다면,
    • -> 범용적인 데이터 제공자로서 동작할 수 있다!

HTTP 메서드

HTTP는 GET, POST, PUT, DELETE, PATCH 같은 메서드를 지원한다

GET /students : 전체 학생 데이터 반환
GET /students/id : id에 해당하는 학생 데이터 반환
POST /students : 새로운 학생 등록
PUT /sudents/id : id에 해당하는 학생 데이터 변경
DELETE students/id : id에 해당하는 학생 데이터 삭제

위와 같이 URL과 메서드의 조합으로 데이터와 동작을 정의할 수 있다.
어떤 환경에서도 똑같이 메서드와 URl만 조합해서 요청을 만들 수 있기에 범용적으로 사용할 수 있다는 장점이 있다


RESTful API 특징

  1. 자기 표현적인 URL
    : URL만으로도 어떤 데이터에 대한 요청인지 알 수 있다

  2. 메서드로 행위 표현
    : 메서드로 데이터에 대한 행위를 표현한다. URL과 메서드 조합으로 데이터에 대한 조작을 정의한다.

  3. 서버/클라이언트 구조
    : 서버는 데이터 제공자로, 클라이언트는 데이터 사용자로 동작한다. 프론트와 백엔드로 분리하고, 백엔드는 데이터만 제공하고, 프론트에서 데이터를 처리하고 화면에 표시하는 역할을 한다.

  4. 무상태 stateless
    : 서버는 클라이언트의 상태를 유지하지 않는다. 서버가 상태를 보관할 필요가 없기 때문에 서버를 손쉽게 교체할 수 있어서 빠른 장애 대응이나 분산 처리에 유용하다.

  5. 캐시 처리
    : REST 구조로 서버가 단순해져서 더 쉽게 캐시 정책을 적용해서 성능을 개선할 수 있다.

profile
공부 기록용 24.08.05~ #LLM #RAG

0개의 댓글