REST API란? 참고
서버는 클라이언트의 상태를 관리하지 않는다.
그러므로 요청이 들어오면 그에 맞는 응답을 보내는 역할만을 수행하는, 즉 모든 요청은 독립적으로 처리된다.
때문에 클라이언트의 이전 요청과 상태에 대한 정보는 API 서버에서 저장되지 않으니 클라이언트는 필요한 모든 정보를 요청에 포함시킬 수 밖에 없다.
이런 무상태성(Stateless)의 예시로 단방향으로 데이터를 전송하는 UDP 프로토콜 등이 있다.
클라이언트와 서버는 반드시 독립적으로 분리되어 있어야하며 서로 변경/발전함에 있어서 영향을 줄 수 없어야한다.
클라이언트는 UI/UX를 담당하며 서버는 클라이언트 요청에 따라 데이터 CRUD 등의 처리와 비즈니스 로직을 담당해야한다.
요청을 통해 보내는 자료들은 저장되어 캐시가 가능하도록 구축되어야 한다.
이를 통해서 저장된 자료들을 주고 받을 때나 동일한 요청에 대한 반복적인 서버 요청에 대해
속도를 향상시키며 서버의 부하를 줄일 수 있다.
(서버에서 응답 시 HTTP 헤더의 Cache-Control 등으로 캐시 제어 정보 값을 반환한다.)
서버의 데이터에 접근하는 방식을 통일해서 데이터를 쉽게 식별 가능하게 해야한다.
HTTP 메소드를 사용하여 리소스나 데이터에 대한 작업을 요청하고, URI를 통해 접근해야 한다.
정확히는 URL만 보고도 어느 데이터를 어떤 상태로 전송해야 하는지 구별할 수 있어야 한다.
ex) https://velog.io/@cv_/REST-API-간단하게-정리
위 URI에서 @cv 사용자의 _REST-API-간단하게-정리 라는 포스트를 가리키는 것을 알 수 있다.
서버는 여러 계층으로 구성하여 각각의 계층이 다른 역할을 가지고 독립적으로 확장/개발이 가능해야 한다.
이를 통해 시스템의 유연성과 확장성을 확보해야 한다.
이렇게 계층화된 시스템으로 이후에 필요에 따라 새로운 계층을 추가 또는 기존 계층을 수정하거나 제거하는데 있어서 용이해야한다.
이를 위해 상위 계층은 하위 계층에게 추상화 인터페이스를 제공하고, 하위 계층은 상위 계층으로부터 제공된 인터페이스를 사용한다.
.../Users
대신 .../users
로 사용.../users/create
대신 .../users
에 POST 메소드를 사용 .../user
대신 .../users
로 사용-
(하이픈)을 사용.../userProfiles
대신 .../user-profiles
로 사용/
(슬래쉬)를 사용하지 않는다..../users/
대신 .../users
로 사용.../users/profiles/image.png
대신 .../users/profiles/image
로 사용