RESTful API란 도대체 뭘까?

Engineer Edlin·2022년 9월 4일
0

Tech Talk

목록 보기
3/9
post-thumbnail

참고사이트: https://blog.bytebytego.com/p/why-is-restful-api-so-popular
1. 위 사이트의 내용을 번역하고 필요 내용은 찾아 정리하였습니다.
2. 영어로 자연스레 통용되는 것들은 영어와 한국어를 병행 표기하였습니다.
3. 그림은 저작권 문제가 있어, 따로 첨부하진 않았지만 이해를 돕기 위해 참고하여 새로 만들어 업로드 하였습니다.
최대한 풀어내려 노력하였지만 이해가 가지 않으시거나 잘못된 내용이 있다면 언제든 피드백 해주세요!😉

0. REST 란 무엇일까?

  • REpresentational State Transfer
  • 클라이언트와 서버가 주고 받는 메시지(데이터) 형식
  • 2000년 대부터 사실상(de facto) 표준이었던 느슨한 메시지 규칙
    • 요청 (request)
    • 응답 (response)

1. RESTful API?

  • REST 규칙을 따르는 API

REST 규칙이란 무엇일까?

1) 규칙 1 - URI에 리소스 담기

  • RESTful API는 리소스를 특정 URIs(Uniform Resource Identifiers)에 담을 수 있다.
  • 단, 리소스는 동사 타입이 아닌 명사 타입으로 그룹화 되어야 한다.
    • https://example.com/api/v3/products : ⭕️
    • https://example.com/api/v3/getAllProducts : ❌

2) 규칙 2 - CRUD

  • Request는 특정 포맷을 가지고 있다.
  • Http 메시지는 ASCII로 인코딩된 텍스트 정보이며 여러 줄로 되어있다.
    • Head: HTTP 시작줄과 HTTP 헤더 (i.e. Post/products HTTP/1.1)
    • Payload: HTTP body


3) 규칙 3 - 어떤 형식으로 데이터를 전송할 것인가 (JSON)

  • xml, JSON 의 형태로 데이터를 주고 받을 수 있다.

4) 규칙 4 - 상태 코드를 담아 응답한다.

  • 200번 대 에러: OK
  • 400번 대 에러: request가 잘못되었다.
  • 500번 대 에러: 서버에 문제가 생겨 응답이 불가하다.
  • 요청에 대한 응답이 실패하면(500번 대 에러), 클라이언트는 다시 요청을 보내는 것을 시도할 수 있다.
  • POST를 제외한 모든 요청은 몇 번씩 반복해서 API에 보낸다 하더라도, 단일 요청으로 인식된다.
  • POST의 경우 다시 요청을 보낼 때, 새로운 리소스를 만든다.

5) 규칙 5 - REST API 는 Stateless 하다.

  • Stateless: 클라이언트와 서버 모두 요청과 응답에 대한 정보를 저장해두지 않는 것을 원칙으로 한다.
  • Pagination 같은 경우, API 요청이 stateless하기 때문에, 응답을 받을 때, 어떤 페이지 요청에 대한 응답을 하는지에 관해 리턴해주어야 한다.
  • 대개의 pagination scheme은 limit(한 페이지당 받고자 하는 item size), page offset 정보를 가지고 있다.
  • pagination에 대한 정보가 없을 경우, default값을 서버에서 사용한다.

2. API Version

  • API에도 여러 종류가 있다.
  • REST API의 경우, 정의된 요청에 대한 응답만 가능했다면 GraphQL은 필요한 컬럼에 대해서만 선택적으로 요청가능하여 불필요한 데이터를 받지 않는다.
  • gRPC도 API의 종류 중 하나인데, 구글에서 개발한 것으로 클라이언트 요청으로 서버에 정의되어있는 함수를 수행시켜 클라이언트가 서버에게 원하는 일들을 훨씬 폭넓고 다양하게 시킬 수 있다.
profile
담대하게 도전하고 기꺼이 실패를 받아들이는 개발자

0개의 댓글