REST 는 자원을 표현에 의한 상태 전달을 뜻한다.
URL을 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 처리 방법을 지정한다.
REST API는 REST를 기반으로 서비스 API를 구현한 것
또한, RESTful API는 REST의 원리를 잘 따르는 시스템을 말한다.
HTTP : 하이퍼 텍스트 전송 프로토콜
HTTP 통신 방법
클라이언트가 HTTP 요청 메시지에 정보를 담아 서버에 요청하면, 서버는 클라이언트로부터 받은 HTTP 메세지를 확인해서 요청받은 새로운 HTTP 응답 메시지에 담아 클라이언트에게 응답한다.
HTTP 메시지 구조
RESt 는 HTTP의 장점을 잘 활용하기 위한 원칙
URL로 자원을 표현하는 데에 집중하고, (API 설계 규칙에 따른 설계)
HTTP Method를 적정히 사용하여 자원의 행위에 대한 정의를 한다.
HTTP Method는 REST API에서 해당 자원을 어떤 방식으로 처리할 것 인지를 명시해주는 역할
GET은 데이터를 조회하기 위해 사용
보통 요청 시에 필요한 데이터를 URL에 PathVariable로 추가시키거나 HTTP Header를 이용
POST는 데이터를 추가하기 위해 사용합니다. 데이터를 Request Body에 포함하여 전송
GET 요청 시에도 Request Body를 전송할 수 있지만, 일반적으로 GET 요청을 보내면 Body를 확인하지 않는다.
JWT는 Json Web Token의 약자로, 웹에서 사용되는 JSON 형식의 토큰에 대한 표준 규격
토큰 자체에 정보를 담고 있어서 JWT 토큰 만으로 사용자의 인증, 인가 정보를 안전하게 주고받을 수 있다.
JWT는 Header, Payload, Signature를 점 (.) 으로 구분한다.
단일 도메인이라면 세션 기반 인증을 사용할 수 있지만, 분산 환경의 경우 토큰 기반인증을 사용하는 것이 적합하다.
세션을 이용하려면 클라이언트에서 갖고 있는 세션 ID에 맞는 값을 서버 측에서 보관해야한다.
이 세션 쿠키는 단일 도메인에서만 작동하도록 설계되어 있기 때문에 여러 도메인에서 관리하기는 어렵다.
반면에 JWT 토큰은 토큰 자체에 데이터를 담고 있기 때문에 파싱 방법만 알고 있다면, 어디서나 토큰 내에 저장된 데이터를 이용할 수 있다. 따라서 여러 도메인으로 분리된 서비스의 경우 토큰 방식의 인증을 선택해야 한다.