REST API

권보원·2023년 5월 13일
1

REST(REpresentational State Transfer)

Method

Method의미Idempotent
POSTCreateNo
GETSelectYes
PUTUpdateYes
DELETEDeleteYes

Idempotent: 한번 수행한것과 여러번 수행한 것의 결과가 같은지

HTTP 헤더

요청 헤더는 클라이언트와 서버 간에 교환되는 메타데이터이다.

  • 데이터: POST,PUT 및 기타 HTTP 메서드가 성공적으로 작동하기 위한 데이터 포함될 수 있다.
  • 파라미터: 수행할 작업에 대한 자세한 정보를 서버에 제공하는 파라미터가 포함 될 수 있다.
    URI세부정보를 지정하는 경로 파라미터, 리소스에 대한 추가 정보를 요청하는 쿼리 파라미터, 클라이언트를 빠르게 인증하는 쿠키 파라미터

Resource

  • URI
  • 모든것을 Resource(명사)로 표현하고, 세부 Resource에는 id를 붙임

Message

메세지 포맷이 존재한다

REST의 특징

  1. Uniform Interface
    URI로 지정한(표준 형식) 리소스에 대한 조작을 통일하고 한정적인 인터페이스로 수행하는 아키텍쳐 스타일이다.

  2. Stateless
    작업을 위한 상태정보를 따로 저장하고 관리하지 않는다. API서버는 들어오는 요청만을 단순히 처리하면 된다 서비스의 자유도가 높아지고 구현이 단순해진다.

  3. Cacheable
    HTTP 웹표준을 사용하기 때문에 웹에서 사용하는 기존 인프라를 그대로 활용이 가능하다 HTTP가 가진 캐싱 기능이 적용 가능하다.

  4. Self-descriptiveness
    REST API메세지만 보고도 이를 쉽게 이해 할 수 있는 자체 표현 구조로 되어있다.

  5. Client-Server
    REST서버는 API제공, 클라이언트는 사용자 인증이나 컨텍스트(세션, 로그인정보)등을 직접 관리하는 구조로 각각의 역할이 확실히 구분되기 때문에 클라이언트와 서버에서 개발해야 할 내용이 명확해지고 서로간 의존성이 줄어들게 된다.

  6. Layer System
    다중 계층으로 구성 될 수 있고 보안, 로드 밸런싱, 암호화 계층을 추가해 구조상의 유연성을 둘 수 있고 PROXY, 게이트웨이 같은

작동 방식

RESTful API의 기본 기능은 인터넷 브라우징과 동일하다. 클라이언트는 리소스가 필요할 때 API를 사용하여 서버에 접속한다. API개발자는 서버 어플리케이션 API문서에서 클라이언트가 REST API를 어떻게 사용해야 하는지 설명한다.
1. 클라이언트가 서버에 요청을 전송한다. 클라이언트가 API문서에 따라 서버가 이해하는 방식으로 요청 형식을 지정한다.
2. 서버가 클라이언트를 인증하고 해당 요청을 수행할 수 있는 권한이 클라이언트에 있는지 확인한다.
3. 서버가 요청을 수신하고 내부적으로 처리한다.
4. 서버가 클라이언트에 응답을 반환한다. 응답에는 요청성공여부와 요청한 정보가 들어있다.

HTTP 상태코드

  • 200: 클라이언트의 요청을 정상적으로 수행함
  • 201: 클라이언트가 어떠한 리소스 생성을 요청, 해당 리소스가 성공적으로 생성됨(POST)
  • 400: 클라이언트의 요청이 부적절 할 경우
  • 401: 클라이언트카 인증되지 않은 상태에서 보호된 리소스를 요청했을 때(로그인하지 않은 유저가 요청 가능한 리소스를 요청 했을 때)
  • 403: 유저 인증상태와 관계없이 응답하고 싶은 리소스를 클라이언트가 요청했을 때 사용(403보다 400이나 404를 사용할 것을 권고, 403 자체가 리소스가 존재한다는 뜻이기 때문)
  • 405: 클라이언트가 요청한 리소스에서는 사용 불가능한 Method를 이용했을 경우 사용하는 응답코드
  • 301: 클라이언트가 요청한 리소스에 대한 URI가 변경되었을 때 사용하는 응답 코드(응답 시 Location header에 변경된 URI를 적어줘야합니다)
  • 500: 서버에 문제가 있을 경우 사용하는 응답코드

2개의 댓글

comment-user-thumbnail
2023년 5월 18일

프로필 사진이 구려요 바꿔주세요

1개의 답글

관련 채용 정보