이번에 프로젝트를 같이 하는 팀원이 API좀 restful하게 짜달라고 했다.
무슨말인지 이해한줄 알았으나, 적용해보려 하니 손이 굳어버렸다.
그래서 하는 개념정리..! 공부를 제대로 한적이 없으니 구멍이 숭숭뚫린 개발을 하게 되는 것 같다. 다시 개념공부의 중요성을 깨닫는다.
Representational State Transfer(대표적인 상태의 전송)의 약자
자원을 이름으로 구분하여 해당 자원의 상태를 주고받는 모든 것
이라는데 자원을 이름으로 구분한다는 것
도 무슨말인지 이해가 안되고 상태를 주고 받는다
는건 더 모르겠다!!!!
그래서 풀어 설명하자면
자원을 이름으로 구분한다는 것: HTTP URL을 통해 자원(Resource)를 명시
자원의 상태를 주고 받는다는 것: HTTP Method를 통해 해당 자원에 대한 CRUD Operation을 적용
이라고 한다. 이렇게 들으니 좀 이해가 되기 시작한다!
payload란?
HTTP 요청을 보낼 때 전달되는 데이터
REST의 원리를 따르는 API
처음에 위의 개념만 읽었을 때는 무슨 소리지..? 라고 생각했다.
하지만 REST의 개념을 가져온 API라고 생각하면 이해가 된다!(사실 개념과 크게 다르지 않은 말이긴 하다.)
하지만 위의 요소만 지킨다고 해선 REST API라고 할 수 없다.
추가적인 설계 규칙이 존재한다(아마 이것때문에 팀원한테 한소리 들은 것 같기도 하다.).
위의 내용 중에서 내가 위반한건 1번과 5번이었다.
카멜케이스를 적용한답시고 대문자를 남발하기도 했고...
행위를 포함하는 것이 좀 더 확실할 것 같아 create와 같은 행위를 포함했었다.
다시 생각해보니 행위는 HTTP method를 통해서도 충분히 표현 가능하다...
출처
https://khj93.tistory.com/entry/네트워크-REST-API란-REST-RESTful이란
https://velog.io/@robinyoondev/Request-Payload에-정보가-그대로-노출되어도-문제가-없을까#:~:text=출처%20%2D%20%5B네트워크%2FHTTP%5D,을%20페이로드라고%20한다.