Network & AWS

[Restful API] 간단하게 정리

Haksae 2022. 1. 31. 00:09

https://haksae.tistory.com/88

 

[REST] [REST API] [RESTful] [퍼옴]

출처 : https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html 글 자체가 너무 좋아서, 출처 내용을 퍼와서 정리만 하겠습니다. [Network] REST란? REST API란? RESTful이란? - Heee's Development Blog..

haksae.tistory.com

예전에 REST에 대해서 퍼왔던 글이 있는데, 이 글에 덧붙여서 RESTful API를 정리해보려한다.

 

0. [REST API]

REST 기반으로 서비스 API를 구현한 것으로,
서버 데이터를 구조적으로 사용하기 위한 API 디자인을 REST API라고 한다.

 

1. [RESTful]이란

  • RESTful은 일반적으로 REST라는 아키텍처를 구현하는 웹 서비스를 나타내기 위해 사용되는 용어이다.
    • ‘REST API’를 제공하는 웹 서비스를 ‘RESTful’하다고 할 수 있다.
  • RESTful은 REST를 REST답게 쓰기 위한 방법으로, 누군가가 공식적으로 발표한 것이 아니다.
    • 즉, REST 원리를 따르는 시스템은 RESTful이란 용어로 지칭된다.

2. RESTful의 목적

  • 이해하기 쉽고 사용하기 쉬운 REST API를 만드는 것
  • RESTful한 API를 구현하는 근본적인 목적이 성능 향상에 있는 것이 아니라 일관적인 컨벤션을 통한 API의 이해도 및 호환성을 높이는 것이 주 동기이니, 성능이 중요한 상황에서는 굳이 RESTful한 API를 구현할 필요는 없다.

 

3. 클라이언트측과 서버측의 REST API

1) 클라이언트 측 REST API

  • GET - 조회하다
  • POST - 생성하다
  • PUT - 갱신하다
  • DELETE - 삭제하다

2) 서버측 REST API

  • 클라이언트측의 요청에 대한 서버의 응답은 두 부분으로 구분 (헤더와 바디)
  • 바디는 Json 타입으로 응답하는 것이다. 헤더의 상태코드 (Status Code)를 잘 사용하면 다양한 정보를 담아 클라이언트에게 전송할 수 있다.

 

  • 응답 헤더의 상태코드는 세 자리 정수로 되어있는데 크게 세 분류가 있다.
    • 2XX - 성공
      • 201 - Created POST 메소드로 요청시 서버쪽에서 자원 생성에 성공하면 201 코드를 클라이언트로 응답
      • 204 - No Content 서버에서 성공했는데 응답할 바디가 없는 경우
    • 4XX - 클라이언트 요청 에러
      • 401 - Unauthorized 인증이 필요한 API에 대해 인증되지 않은 요청일 경우
      • 403 - Fobbiden 401과 유사하면서 사용 방법에 대한 해석은 개발자마다 다르다
      • 404 - Not found 조회할 자원이 서버에 없는 경우 응답하는 코드
      • 409 - Conflict 클라이언트에서 POST메소드로 서버에서 자원 추가를 요청했을 때 이미 그 자원이 서버에 있어서 자원을 추가할 수 없는 경우.
    • 5XX - 서버 응답 에러
      • 503 - Service Unavailable 서버가 과부하 상태 / 점검 상태 일시적으로 요청 처리 불가
      • 504 - Gateway Timeout 서버를 통하는 게이트웨이에 문제 발생하여 시간 초과
      • 505 - HTTP Version Not Supported 해당 HTTP 버전에서는 지원되지 않는 요청임을 알림