Representational State Transfer의 약자로,
엄격한 의미로 REST는 네트워크 아키텍처 원리의 모음이다.
여기서 '네트워크 아키텍처 원리'란 자원을 정의하고 자원에 대한 주소를 지정하는 방법 전반을 일컫는다.
간단한 의미로는, 웹 상의 자료를 HTTP위에서 SOAP이나 쿠키를 통한 세션 트랙킹 같은 별도의 전송 계층 없이 전송하기 위한 아주 간단한 인터페이스를 말한다.
자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다.
즉, 자원(resource)의 표현(representation) 에 의한 상태 전달
REST는 HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용할 수 있다.
참고(https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html)
API는 애플리케이션 소프트웨어를 구축하고 통합하기 위한 정의 및 프로토콜 세트로, 애플리케이션 프로그래밍 인터페이스(Application Programming Interface)를 나타낸다.
이러한 API를 통해 컴퓨터 프로그램간 상호작용을 촉진하며, 서로 정보를 교환 가능하도록 한다.
쉽게 정리하자면, API는 당사자들 간 계약을 나타내는 도큐멘테이션을 갖춘 계약으로 비유할 수 있다.
한쪽 당사자가 특정한 방식으로 구성된 원격 요청을 보내면 다른 쪽 당사자의 소프트웨어가 이에 응답하는 방식으로 구성되어 있기 때문이다.
참고(https://www.redhat.com/ko/topics/api/what-are-application-programming-interfaces)
REST 기반으로 서비스 API를 구현한 것
https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html
웹소켓은 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜이다.
웹에서 WebSocket 객체는 서버와의 WebSocket 연결을 생성하고 관리할 수 있는 API 들을 제공한다. 이는 데이터를 전송하거나 주고 받는 등의 API 들을 포함한다.
RFC 6455 명세서에 정의된 프로토콜인 웹소켓(WebSocket)을 사용하면 서버와 브라우저 간 연결을 유지한 상태로 데이터를 교환할 수 있다.
데이터는 ‘패킷(packet)’ 형태로 전달되며, 전송은 커넥션 중단과 추가 HTTP 요청 없이 양방향으로 이뤄진다.
stateless한 HTTP에 비해 오버헤드가 적으므로 유용하게 사용할 수 있다.
참고(https://ko.javascript.info/websocket)
이런 특징 때문에 웹소켓은 온라인 게임이나 주식 트레이딩 시스템같이 데이터 교환이 지속적으로 이뤄져야 하는 서비스에 아주 적합하다.
사진을 보면, WebSocket은 추가 HTTP 요청 없이 양방향으로 전송을 한다는 것을 확인할 수 있다.