RESTful과 Method에 대한 고민

심재익·2021년 4월 9일
0

백엔드 공부

목록 보기
1/3

팀 프로젝트를 하는데, 백앤드를 맡게 되었다.
API를 만드는데, 저번 부스트캠프때 최대한 RESTful하게 개발을 하려고 노력했던것이 기억이 나서, 이번 프로젝트도 노력해보려고 한다.
이 포스트는 까먹었던 내용을 정리하는 동시에 어떤 고민을 했는지 담았다.

RESTful?

REST는 (Representational State Transfer)으로, 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.

엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다.

  • 출처 : 위키백과

간단히 "웹에 존재하는 모든 자원(이미지, 동영상, DB자원)에 고유한 URI를 부여해 활용"하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다고 한다.


HTTP Method

HTTP method에는 여러가지가 있지만, 그 중 CRUD에서 자주 사용되는 4가지를 사용하려고 한다.

  • POST - Create
  • GET - Read
  • PATCH - Update
  • DELETE - Delete

PUT vs PATCH ?

처음 update을 하기 위해 PUT과 PATCH중 어떤것을 써야하는지에 대해 고민을 했었다. 하지만 둘 중 하나만 쓰기보단, 둘의 차이점을 이해하고 둘 다 활용해보는것으로 결정했다.

PUT

  • 자원의 전체를 교체, 자원교체 시 모든 필드 필요.
  • 전체가 아닌 일부만 전달할 경우, 전달받지 못한 필드는 null or 초기값 처리가 된다.

PATCH

  • 자원의 부분교체, 자원교체시 일부 필드만 필요

위와 같은 차이점 때문에, 모든 데이터를 전송할땐 PUT, 몇가지 요소만 바꿀땐 PATCH를 사용하기로 했다.


REST 구성요소

  1. 자원(Resource) , URI
    모든 자원은 고유한 ID를 가지고 ID는 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. HTTP에서 이러한 자원을 구별하는 ID는 ‘Students/1’ 같은 HTTP URI 이다.

  2. 행위(Verb) , Method
    클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다. HTTP 프로토콜에서는 GET , POST , PUT , DELETE 같은 Method를 제공한다.

  3. 표현(Representation)
    클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation이라고 한다. REST에서 하나의 자원은 JSON , XML , TEXT , RSS 등 여러형태의 Representation으로 나타낼수 있다.

JSON vs XML

우선, 상당히 고민할 거리가 많은것 같다.
성능이나 속도, 편리함을 우선시 하면 JSON을,
데이터의 무결성을 보장해야 한다면 XML을 사용하는것이 올바른 것 같다.

위 표와 같이, 분명 XML이 가지는 강점도 크다. 따라서 현 프로젝트에서 어떤 방식을 쓰는지는 API를 작성하기 전까진 빠르게 고민해야 할 것 같다.

그리고 만약, JSON을 사용한다면 입출력 데이터의 무결성 확보를 위해 커스텀 데이터 규약을 정의해야 함을 잊지 않아야 한다.


참고자료 :
RESTful : https://medium.com/@hckcksrl/rest%EB%9E%80-c602c3324196
XML vs JOSN : https://www.coovil.net/xml-vs-json/

profile
치킨을 좋아하는 개발자

0개의 댓글