RESTful API란 무엇인가요?

박재현·2024년 2월 22일
1

Nomadcoder React Study 4기

목록 보기
14/49

image source

REpresentational State Transfer

REST는 웹상의 컴퓨터 시스템간에 표준을 제공해 시스템이 서로 더 쉽게 통신할 수 있도록 하는 아키텍셔 스타일이다.

RESTful 시스템이라고도 불리는 REST 시스템은 stateless이고 클라이언트와 서버를 분리하는 방식이 특징이다.

클라이언트와 서버의 분리

REST 아키텍처 스타일에서는 클라이언트와 서버구현이 서로 독립적으로 수행될 수 있다.
이는 서버의 작동에 영향을 주지않고 클라이언트 코드를 언제든 수정할 수 있고, 반대로 클라이언트 작동에 영향을 주지않고 서버 코드를 수정할 수 있음을 의미한다.

REST 인터페이스를 사용하면 서로 다른 클라이언트가 동일한 REST 엔드포인트 도달하고 동일한 작업을 수행하며 동일한 응답을 받을 수 있다.

Stateless

클라이언트와 서버 관계에서 서버가 클라이언트의 상태를 보존하지 않는것을 의미한다.

Stateless 구조에서 서버는 단순히 요청이 오면 응답을 보내는 역할만 수행하며, 상태관리는 전적으로 클라이언트에게 책임이 있다는 것이다.

즉, 클라이언트와 서버간의 통신에 필요한 모든 상태 정보들은 클라이언트에서 가지고 있다가 서버와 통신할때 데이터를 실어 보내는것이 stateless(무상태) 구조다.

서버는 단순히 request받아서 응답만 해주기 때문에 유지에 대한 부하가 현저히 줄어들 수 있다.

따라서 이는 보다 확장에 용이하고, 유연하며, 높은 독립성을 의미한다.


Communication between Client and Server

REST 아키텍처에서 클라이언트는 리소스 검색하거나 수정하기 위해서 서버에게 요청(request)을 보내고, 서버는 해당 요청에 대한 응답(response)를 보낸다.

클라이언트?

클라이언트는 웹에서 정보에 접근하려는 사용자를 말한다.
사람이 될수도있고 소프트웨어 시스템일수도 있다.

리소스?

리소스는 다양한 응용프로그램이 클라이언트에게 제공하는 정보를 말한다.
이미지, 동영상, 텍스트, 숫자 등등의 모든 유형의 데이터일 수 있다.
클라이언트에게 리소스를 제공하는 시스템을 서버라고 부른다.

✨ What is CRUD?


RESTfull API 클라이언트의 request에는 무엇이 포함되어 있나요?

  • 고유 리소스 식별자
    서버는 고유한 리소스 식별자로 각 리소스를 식별하는데, REST 서비스의 경우 일반적으로 서버는 URL을 사용해 리소스 식별을 수행한다.
    api/products/liked/:id

  • HTTP Method (일반적으로 4가지)

    • GET:클라이언트는 GET을 사용해 서버와 지정된 URL에 있는 리소스에 접근할 수 있다.
    • POST: 클라이언트는 POST를 사용해 서버에 데이터를 전송하는데, 여기에는 데이터가 포함되어 있다. 또한 POST 여러번 전송하면 동일한 리소스를 여러번 생성하는 부작용이 있다. (멱등성이 없다.) 또 POST는 리소스 전체를 다시 덮어쓴다.
    • PUT: 클라이언트는 PUT을 사용해 서버의 기존 리소스를 업데이트 할 수 있다. POST와 달리 여러번 PUT request를 전송해도 결과는 동일하다. (멱등성이 있다.)
    • DELETE: 클라이언트는 DELETE를 사용해 리소스를 삭제한다.
  • HTTP 헤더
    request header는 client와 server간 교환데는 메타데이터로 server에서 필요로하는 정보를 담을 수 있다

  • 데이터
    REST API request에는 server의 requirement에 따라서 필요로하는 data가 포함될 수 있다.

  • 파라미터
    자세한 정보를 서버에 제공하기 위해 몇가지 파라미터가 포함될 수 있다.
    - URl 세부 정보를 지정하는 path 파라미터
    - 리소스에 대한 추가 정보를 요청하는 query 파라미터
    - 클라이언트를 빠르게 인증하는 쿠키 파라미터(ex: token)


Examples of Requests and Responses

GET

request

GET http://fashionboutique.com/customers
Accept: application/json

response

Status Code: 200 (OK)
Content-type: application/json

POST

request

POST http://fashionboutique.com/customers
Body:
{
  “customer”: {
    “name” = “Scylla Buss”,
    “email” = “scylla.buss@codecademy.org”
  }
}

response
위 post request를 받고 서버는 유니크한 customer를 생성함

201 (CREATED)
Content-type: application/json

그 다음 해당 유저를 조회하고 싶다면 다시 아래처럼 GET으로 request를 날릴 수 있음
GET request for search specific user

GET http://fashionboutique.com/customers/123
Accept: application/json

PUT

request
PUT은 리소스의 수정을위해 사용하는데, 이 경우 email을 수정한다.

PUT http://fashionboutique.com/customers/123
Body:
{
  “customer”: {
    “name” = “Scylla Buss”,
    “email” = “scyllabuss1@codecademy.com”
  }
}

response

Status Code: 200 (OK)
Content-type: application/json

DELETE

request

DELETE http://fashionboutique.com/customers/123

response

Status Code: 200 (OK)
Content-type: application/json

또는

Status Code: 204 (NO CONTENT)
Content-type: application/json

중요한건 delete reuqest도 response를 받을 수 있다.


참고

profile
기술만 좋은 S급이 아니라, 태도가 좋은 A급이 되자

0개의 댓글

관련 채용 정보