REST(Representational State Transfer)는
자원을 URI 로 표현하고, HTTP 메서드로 해당 자원에 대한 행위를 정의
웹 아키텍처 이다.
• /users → 사용자 자원
• GET /users → 사용자 조회
• POST /users → 사용자 생성
이렇게 예를 들 수 있다.
REST를 잘 지킨 API 자체를 뜻한다.
RESTful한 API를 작성하기 위한 기준에는 6가지 항목이 있다.
그중에 무상태성 (Stateless)가 있다.
Stateless는 서버가 클라이언트의 이전 요청 상태를 저장하지 않음.
각 요청은 독립적이고, 어떤 요청을 처리하려면 필요한 모든 정보는 요청 안에 포함되어 있어야 함.
RESTful API의 URI 설계 예시
서버 확장성(Scalability)이 좋아짐
요청 간 상태를 저장하지 않고, 서버가 더 빠르게 처리 가능하다.
서버를 여러 대로 확장할 때도 유리함.
서버와 클라이언트가 독립적으로 동작할 수 있음
클라이언트는 매번 필요한 정보를 보내고, 서버는 그 정보만 가지고 응답하면 되니까 유지 보수에 있어서 유리하다.
요청 간 의존성 X
이전 요청이 성공했는지 실패했는지 몰라도 다음 요청을 보낼 수 있어. REST의 독립적인 리소스 접근 방식과 동일하게 작동
정리
사용자가 로그인을 하게되면
REST API에서는 서버가 로그인 상태를 기억하지 않는다.
대신 클라이언트는 매 요청마다 JWT 같은 토큰을 헤더에 담아서 보내함.
예시)
> GET /user/profile
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR...
// Stateless(무상태성) 구조
반면, Stateful한 구조에서는 서버가 로그인 상태를 직접 기억하게됨.
대표적인 방식: 세션 로그인 - 서버가 세션을 생성하고 클라이언트는 해당 세션 ID를 쿠키로 가지고 다님.
각 방식마다 위험 요소가 다르고, 보완 방법이 있다.