팀 프로젝트를 하는데, 백앤드를 맡게 되었다.
API를 만드는데, 저번 부스트캠프때 최대한 RESTful하게 개발을 하려고 노력했던것이 기억이 나서, 이번 프로젝트도 노력해보려고 한다.
이 포스트는 까먹었던 내용을 정리하는 동시에 어떤 고민을 했는지 담았다.
REST는 (Representational State Transfer)으로, 월드 와이드 웹과 같은 분산 하이퍼미디어 시스템을 위한 소프트웨어 아키텍처의 한 형식이다.
엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다. 여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다. 간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다.
간단히 "웹에 존재하는 모든 자원(이미지, 동영상, DB자원)에 고유한 URI를 부여해 활용"하는 것으로, 자원을 정의하고 자원에 대한 주소를 지정하는 방법론을 의미한다고 한다.
HTTP method에는 여러가지가 있지만, 그 중 CRUD에서 자주 사용되는 4가지를 사용하려고 한다.
처음 update을 하기 위해 PUT과 PATCH중 어떤것을 써야하는지에 대해 고민을 했었다. 하지만 둘 중 하나만 쓰기보단, 둘의 차이점을 이해하고 둘 다 활용해보는것으로 결정했다.
PUT
PATCH
위와 같은 차이점 때문에, 모든 데이터를 전송할땐 PUT, 몇가지 요소만 바꿀땐 PATCH를 사용하기로 했다.
자원(Resource) , URI
모든 자원은 고유한 ID를 가지고 ID는 서버에 존재하고 클라이언트는 각 자원의 상태를 조작하기 위해 요청을 보낸다. HTTP에서 이러한 자원을 구별하는 ID는 ‘Students/1’ 같은 HTTP URI 이다.
행위(Verb) , Method
클라이언트는 URI를 이용해 자원을 지정하고 자원을 조작하기 위해 Method를 사용한다. HTTP 프로토콜에서는 GET , POST , PUT , DELETE 같은 Method를 제공한다.
표현(Representation)
클라이언트가 서버로 요청을 보냈을 때 서버가 응답으로 보내주는 자원의 상태를 Representation이라고 한다. REST에서 하나의 자원은 JSON , XML , TEXT , RSS 등 여러형태의 Representation으로 나타낼수 있다.
우선, 상당히 고민할 거리가 많은것 같다.
성능이나 속도, 편리함을 우선시 하면 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/