[네트워크] REST/REST API/RESTful

박채은·2022년 11월 30일
0

네트워크

목록 보기
5/6

REST

정의

  • Representational State Transfer
  • 클라이언트와 서버의 통신 방식으로, HTTP의 장점(무상태성)을 극대화할 수 있는 네트워크 아키텍쳐이다.
  • 자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것을 의미

(1) 자원을 이름으로 구분(Representational)

  • 자원: 이름을 지닐 수 있는 모든 정보 = 객체

(2) 자원의 상태를 전달(State Transfer)

  • 데이터가 요청되면, 그 데이터(자원)의 상태를 전달
  • JSON 또는 XML를 통해 데이터를 전달

✅ 소프트웨어 아키텍처 : 소프트웨어의 구성과 그 요소들간의 관계를 표현하는 시스템의 구조
= 설계도


1. 자원을 URI로 표현

  • URI의 엔드포인트는 동사가 아닌, 명사로 표현
  • 자원 이름은 모두 소문자, 공백은 하이픈(-) 사용 (언더바 x)

2. HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 CRUD Operation을 적용
즉, HTTP 메소드로 리소스의 행동을 처리함


URI 사용 시, 주의 사항

1. /product/id=3

  • 쿼리 사용
  • 무수히 많은 product에서 필터링을 거쳐서, 데이터를 가공해서 가져옴
  • 필터링이 거쳐야 하는 경우에 사용

2. /product/3

  • 데이터를 가공하지 않음
  • 필터링이 아니라, id = 3인 product 콕 집어서 가져오는 것이므로 /{id}로 작성해주는 방법이 좋다!

하나의 것을 콕 집어서 가져와야 한다면 /{id}식으로, 필터링을 해야한다면 쿼리를 사용


CRUD Operation

  • Create : 데이터 생성(POST)
  • Read : 데이터 조회(GET)
  • Update : 데이터 수정(PUT, PATCH)
  • Delete : 데이터 삭제(DELETE)

GET

GET 메서드는 body를 가지지 않기 때문에 URI만을 사용하여 필요한 리소스를 전달한다.
필터링이 필요한 경우, URI에 query parameter를 사용한다.

PUT vs PATCH

  • PUT : 전체 교체, 없으면 새롭게 생성
  • PATCH : 일부분만 수정

REST API

  • REST가 적용된 API

✅ API란?
프로그램들이 서로 상호작용하는 것을 도와주는 매개체

RESTful

  • REST가 적용된 시스템

[참고]
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
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

0개의 댓글