fetch와 axios 차이를 알아보다가 RESTful API와 HTTP까지 알아보게 되고 다음에 또 찾아볼 것 같아서 정리하는 게시물.
간단하게 REST를 알아보자면 네트워크 상에서 Client와 Server 사이의 통신 방식 중 하나이고 자원을 이름으로 구분해서 자원의 상태(정보)를 주고 받는 모든 것을 의미.
자원은 해당 소프트웨어가 관리하는 모든 것으로 문서, 그림, 데이터 등이 있다. Client는 URL을 이용해서 자원을 지정하고 자원의 상태의 조작을 Server에 요청!
자원이 있는 쪽이 서버, 자원을 요청하는 쪽이 클라이언트.
서버는 API을 제공하고, 비즈니스 로직 처리 및 저장을 책임.
클라이언트는 사용자 인증, context(세션, 로그인 정보)등을 관리.
HTTP : 클라이언트와 서버 간 통신을 위한 규칙
HTTP는 무상태 프로토콜. REST도 그렇다. 서버가 클라이언트의 상태를 보존하지 않는다는 의미.
서버는 각각의 요청을 완전히 별개의 것으로 인식하고 처리.
클라이언트의 context를 서버에 저장하지 않음.
나머지는 이해가 안되서 이만 생략하고 나중에 다시 읽어보자.
REST 참고한 블로그
API에서 사용할 데이터 포맷은 대부분 JSON 또는 XML을 사용한다. 데이터 포맷은 클아이언트와 서버 간의 통신을 위한 표준으로 사용된다.
HTTP 응답 상태 코드를 사용해서 요청의 성공 또는 실패를 나타내고 일반적으로 2XX 시리즈 코드는 성공을, 4XX와 5XX 시리즈 코드는 실패를 나타낸다.
RESTful 원칙을 준수한다는 것은 API 설계, HTTP 메서드 선택 등의 원칙을 따르는 것을 의미한다.
주요 5가지 메서드
안전은 호출해도 리소스를 변경하지 않는 메서드 속성.
GET 메서드는 단순히 데이터를 가져올 때 사용하니 GET은 안전한 메서드이다.
멱등은 몇 번을 호출하든 최종적인 결과가 똑같은 메서드 속성.
GET(데이터 가져오기), DELETE(삭제하기), PUT(대체하기) 작업은 몇 번이 수행 되건 결과는 같다. 그러나 POST는 여러 번 호출 된다면 결과가 중복해서 발생할 수 있다. 게시물 등록이 여러개 되거나, 결제가 중복되거나.
POST 메서드는 멱등하지 않다.
캐시는 응답 결과 리소르를 캐시해서 사용해도 되는지에 대한 속성.
GET, HEAD, POST, PATCH 메소드가 이 속성을 가진다. 일반적으로 GET과 HEAD 정도만 캐시로 사용한다.
데이터를 Message Body에 담아 보내는 여부의 표.

메서드들의 자세한 설명 참고할 블로그
HTTP 메서드 정리
RESTful API을 호출하고 데이터를 가져와 프론트엔드 애플리케이션에 통합할 때 가장 일반적인 방법은 fetch() 함수의 사용이 있다.
월드 와이드 웹에서 데이터를 전송하는데 사용되는 프로토콜
클라이언트와 서버가 데이터를 주고 받는것은 HTTP 프로토콜 덕분.
HTTP는 요청/응답 형태로 데이터를 전송하는 프로토콜이다. 거의 모든 형태의 데이터를 HTTP body에 담아서 보낸다.
무상태성
프로토콜이므로 서버가 클라이언트의 상태를 보존하지 않는다. 따라서 매 요청에 첫 응답인 것 처럼 동작함. 이 특징의 장점은 스케일 아웃에 유리하다는 것. (서버를 수평적으로 늘려 서버의 부하를 줄이는 방법)
요청과 응답
HTTP는 클라이언트 서버 구조이다. 요청과 응답 구조로 동작하고 클라이언트는 요청하고 서버의 응답을 대기한다. 요청은 HTTP 메서드와 헤더, 본문으로 구성.
텍스트 기반 프로토콜
HTTP 요청 및 응답은 텍스트로 구성되며, 이해하기 쉽다. 이 특징은 디버깅 및 트래킹을 용이하다.
비연결성
통신이 있을때만 연결하고 응답으로 데이터를 보내고 나면 연결을 종료한다. 사용자가 수천명이어도 서버에서 동시에 처리하는 요청은 수십개 이하로 매우 작아져서 서버 자원을 효율적으로 사용할 수 있다.
HTTP 특징
기본 인증
HTTP는 기본 인증을 제공해 사용자의 이름과 암호를 사용해서 서버에 접근할 수 있다. 그러나 이 방식은 보안에 취약해 HTTPS와 같은 보안 레이어가 필요함
보안
HTTP는 텍스트 기반의 프로토콜으로 데이터를 평문으로 전송해 보안 취약점이 있다.
HTTPS는 보안 소켓 레이어(SSL 또는 TLS)위에 HTTP를 레이어드한다. 데이터를 암호화하고 데이터의 변조를 방지한다.
SSL은 보안소켓, TLS는 전송 계층 보안
데이터 무결성
HTTP와 달리 HTTPS는 데이터 무결성을 보장하며 데이터가 중간에 변경되거나 손상될 때 경고를 발생한다.
신원 인증
HTTPS는 인증된 인증 기관에 의해 서명된 SSL/TLS 인증서를 사용하여 웹 사이트의 신원을 확인한다. 중간자 공격을 방지할 수 있다.
검색 엔진 최적화
구글 같은 경우는 HTTPS를 사용하는 웹사이트에 더 높은 점수로 평가한다.
웹사이트에서 개인 정보를 수집하거나 민감한 데이터를 처리하는 경우는 HTTPS를 사용하는 것이 중요하다.