왜 axios, SWR와 같은 라이브러리를 사용하면서 별도로 Socket을 사용해야 하나?
출처: GPT, https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80 (rest api에 대하여)
요약: 실시간 통신과 같은 상호 작용 유형이 아닌 자원을 제어해야만 하는 상호 작용 유형(RESTful API)을 위해 Socket.io가 아닌 axios를 별도로 사용해 주어야 하는 것이다.
소켓과 Axios의 차이점:
웹소켓은 TCP연결을 통해 실시간 완벽한 양방향 통신 채널을 제공한다(기존의 HTTP에 양방향 통신을 가능하게 한 것이 웹소켓이다). Axios는 브라우저와 Node.js를 위한 약속 기반 HTTP클라이언트이다.
소켓같은 경우 실시간 양방향 통신(real time full duplex communication)을 허용하여 어떤 반응을 기대하지 않고 자신의 동작을 수행 하지만 axios는 요청에 따른 결과를 기대하는식(promise-based HTTP client)이다. post요청을 날리면 그 요청에 대한 반응을 기대하고 GET요청을 날리면 그 요청에 대한 반응을 기대하는 식이다.
웹소켓은 채팅 애플리케이션, 온라인 게임, 주식 시장 추적 등과 같이 실시간 업데이트가 필요한 애플리케이션에 일반적으로 사용된다. JavaScript에서는 일반적으로 Socket.IO와 같은 라이브러리를 사용하여 WebSocket을 사용한다. Axios는 브라우저와 Node.js를 위한 약속 기반 HTTP 클라이언트이다. 즉, JavaScript 코드에서 HTTP 요청을 할 수 있다. 요청 및 응답 가로채기, 자동 JSON 데이터 변환 등과 같은 기능을 지원한다. Axios는 AJAX 요청 및 응답 처리 프로세스를 단순화한다. 일반적으로 API에서 데이터를 가져오고, 서버로 데이터를 보내고, 웹 애플리케이션에서 HTTP 관련 작업을 처리하는 데 사용된다.
요약하면, Socket은 단일 TCP 연결을 통한 실시간 양방향 통신에 사용되는 반면, Axios는 보다 전통적인 클라이언트-서버 통신 모델에서 HTTP 요청을 만들고 응답을 처리하는 데 사용됩니다
왜 axios, SWR와 같은 라이브러리를 사용하면서 별도로 Socket을 사용해야 하나?
GPT질문: Socket.IO라이브러리와 axios를 함께 사용하는 이유가 뭐야? scoket.io만 사용해도 충분하지 않아?
A. 애플리케이션 요구 사항에 따라 Socket.IO와 Axios를 함께 사용해야 할 수도 있습니다. Socket.IO는 실시간 양방향 통신에 탁월하지만 특정 시나리오에서 기존 HTTP 요청의 필요성을 대체하지는 않습니다. 두 가지를 모두 사용할 수 있는 이유는 다음과 같습니다.
실시간 통신과 RESTful API 비교:
Socket.IO는 채팅 애플리케이션이나 라이브 데이터 스트리밍과 같은 실시간 업데이트에 적합합니다.
그러나 애플리케이션의 모든 상호 작용에 실시간 업데이트가 필요한 것은 아닙니다. 일부 상호 작용은 특히 CRUD 작업(생성, 읽기, 업데이트, 삭제)을 처리할 때 기존 RESTful API에 더 적합할 수 있습니다.
RESTful 엔드포인트:
인증, 데이터 검색 또는 데이터베이스 조작과 같은 다양한 작업을 위해 백엔드에 RESTful 엔드포인트가 있을 수 있습니다.
Axios는 HTTP 요청 생성 및 응답 처리를 단순화하므로 일반적으로 이러한 엔드포인트와 상호 작용하는 데 사용됩니다.
실시간 HTTP와 기존 HTTP의 결합:
애플리케이션에는 실시간 업데이트와 기존 HTTP 요청의 조합이 필요할 수 있습니다.
예를 들어 채팅 애플리케이션에서는 실시간으로 메시지를 보내고 받기 위해 Socket.IO를 사용할 수 있지만, 사용자가 채팅방에 참여할 때 채팅 기록을 가져오거나 사용자 프로필을 업데이트하려면 Axios를 사용할 수 있습니다.
타사 API와의 통합:
애플리케이션이 WebSocket 기반이 아닌 타사 API와 상호 작용해야 하는 경우 Axios는 해당 API에 대한 HTTP 요청을 만들기 위한 적절한 선택이 될 것입니다.
요약하자면, Socket.IO는 실시간 통신에 탁월하지만 Axios를 함께 사용하면 기존 RESTful API 상호 작용 또는 타사 서비스와의 통합과 같이 실시간 패러다임에 맞지 않을 수 있는 다른 유형의 상호 작용을 처리할 수 있습니다. .
==> 즉 자원을 제어해야만 하는 실시간 통신과 같은 상호 작용 유형이 아닌 자원을 제어해야만 하는 상호 작용 유형(RESTful API)을 위해 Socket.io가 아닌 axios를 별도로 사용해 주어야 하는 것이다.
아래는 RESTful API에 대한 설명으로 글 전체가 와 닿지는 않지만 대부분의 내용이 중요한 내용을 담는다. REST라는 것이 Representational State Transfer라고 하고 이는 표현이가능한. 즉 이름이 이름는 상태(State)의 교환(Transfer)의 뜻으로 어떠한 이름이 있는 특정상태(데이터)의 교환을 위한 방식이 Restful API라고하며 와닿는 설명을 한다.
https://velog.io/@somday/RESTful-API-%EC%9D%B4%EB%9E%80