REST API

reenact11·2024년 4월 19일

Network

목록 보기
2/4
post-thumbnail

REST API

REST-API


REST의 의미

RESTREpresentationl State Transfer의 약자로 자원을 이름으로 구분해서
해당 자원의 상태를 주고받는 것을 의미한다.

URI를 통해 자원을 명시하고, HTTP 메소드(POST, GET, PUT, DELETE, PATCH 등)를 통해
명시된 해당 자원에 대한 *CRUD 작업하는 것을 의미한다.

*CRUD

  • create : 생성(POST)
  • read : 조회(GET)
  • update : 수정(PUT, PATCH)
  • delete : 삭제(DELETE)

API의 의미

APIApplication Programming Interface의 약자로 컴퓨터나 프로그램 사이의 연결을 뜻한다.
일종의 소프트웨어 인터페이스이며 다른 소프트웨어에 서비스를 제공한다.

API

예를 들면 API는 식당에서 점원이 주문받아 주방(시스템)에 전달하고 고객이 요구한 메뉴(데이터)를 제공하는 것과 비슷하다. 이 과정에서 점원은 명시된 메뉴(API의 규격)만 주문받을 수 있다.

즉, API 는 소프트웨어 혹은 애플리케이션 간에 정보를 주고받는 데 필요한 규약이며 이를 통해
서로 다른 소프트웨어나 서비스가 상호작용하며 데이터를 주고받을 수 있다.

REST API를 사용하는 이유

  • 간단한 인터페이스를 제공하여 개발자들이 쉽게 이해하고 사용할 수 있다.
  • 자원 중심적이고 *Stateless한 특성으로 확장성이 뛰어나다.
  • URI를 통해 자원을 식별하므로 API의 재사용 가능성을 높여준다.
  • 캐시 처리가 가능하여 동일한 요청에 대해 중복 작업을 피하고 성능을 최적화할 수 있다.

*Stateless : 서버가 클라이언트의 상태를 저장하지 않는 것

REST API 구성 요소

  • 자원(Resource) : HTTP URI /users, /products/123
  • 자원에 대한 행위(Verb) : HTTP Method GET, POST ...
  • 자원에 대한 행위의 내용 (Representations) : HTTP Message *Pay Load img-1, img-2
  • REST API 구성요소가 실제로 HTTP 통신 구조에서 어떻게 위치하는지 궁금하다면?
    참고 : HTTP Request/Response의 구조
    img-1HTTP-headerimg-2JSON

*Pay Load : HTTP 요청 또는 응답에서 전송되는 실제 데이터(HTTP header, JSON, XML ...)


설계 규칙

  • 대문자보다는 소문자 사용../Run -> ../run
  • 마지막에 슬래시 포함하지 않음 ../test/ -> ../test
  • 동사보다는 명사 사용 ../testing -> ../test
  • 언더바 대신 하이픈(-, hypen) 사용 ../run_test -> ../run-test
  • 확장자는 URI에 포함하지 않음 ../apple.jpg -> ../apple
  • 행위를 포함하지 않음 ../update-post/1 -> ../post/1

설계 시 중요한 점

  • 자원 식별 : 각 자원은 고유한 URI를 가져야 한다. URI는 클라이언트가 자원을 식별하고 접근하기 위한 주소로 사용된다.

  • 표현의 분리 : 자원의 표현(Representation)과 행위(Action)를 분리해야 한다.

  • HTTP 메소드 사용 : 올바른 HTTP 메소드를 사용하여 각 자원에 대한 행위를 정의해야 한다. 일반적으로 GET(조회), POST(생성), PUT(갱신), DELETE(삭제) 메소드가 사용된다.

  • 상태를 관리하지 않음 : RESTStateless한 아키텍처 스타일이기 때문에 서버는 클라이언트의 상태를 관리하지 않는다. 이전 요청에서의 상태 정보를 기억하거나 관리하지 않아야 한다.

  • 적절한 HTTP 상태 코드 사용 : 클라이언트에게 요청의 성공 또는 실패를 전달하기 위해 적절한 HTTP 상태 코드(200, 201, 202, 204, 400, 404 ...)를 반환해야 한다.

RESTful?

일반적으로 REST 의 아키텍처 스타일을 따르는 API를 REST API 혹은 RESTful API 라고 표현한다.
같은 의미이므로 아 다르고 어 다르다 마음에 드는 단어를 선택해서 쓰면 될 것 같다.


출처 및 참고자료:
https://eun-jee.com/post/web/RESTful_API/
https://khj93.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-REST-API%EB%9E%80-REST-RESTful%EC%9D%B4%EB%9E%80
https://www.incodom.kr/REST
https://img1.daumcdn.net/thumb/R1280x0.fjpg/?fname=http://t1.daumcdn.net/brunch/service/user/8kCc/image/KqPoc0TbVmKlZi1ldFCyfNR0Kao.jpg
https://res.cloudinary.com/practicaldev/image/fetch/s--YTDTEgpk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ekawmj3rafdtn06hzj79.png
https://gmlwjd9405.github.io/images/network/restapi.png
https://chat.openai.com/
https://engineerinsight.tistory.com/47

0개의 댓글