HTTP와 HTTPS의 차이점은 무엇인가요?
HTTP (HyperText Transfer Protocol) 와 HTTPS (HyperText Transfer Protocol Secure)의 가장 큰 차이점은 보안입니다. HTTPS는 HTTP에 SSL/TLS 프로토콜을 추가하여 데이터를 암호화하여 전송합니다. 이로 인해 중간에서 데이터를 가로채더라도 내용을 확인할 수 없습니다. 따라서 HTTPS는 민감한 정보를 전송할 때 사용됩니다.
참조
https://www.cloudflare.com/ko-kr/learning/ssl/transport-layer-security-tls/
https://whatismarketing.tistory.com/61
RESTful API에 대해 설명해보세요.
REST는 Representational State Transfer의 약자로, 자원을 자원(resource)의 표현(representation) 으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미합니다.
REST 아키텍처 스타일을 따르는 API를 REST API라고 합니다.
일반적으로 REST API와 RESTful API라는 용어는 같은 의미로 사용할 수 있습니다.
RESTful API는 HTTP 프로토콜을 사용하여 클라이언트와 서버 간의 통신을 처리합니다. 이를 위해 RESTful API는 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용하여 서버에 요청을 보내고, 서버는 이에 대한 응답을 반환합니다.
RESTful API는 자원에 대한 URI(Uniform Resource Identifier)를 사용하여 자원을 표현하고, 자원의 표현 방법에 대한 미디어 타입을 정의합니다. 예를 들어, 자원의 URI는 "/users"와 같이 표현되며, JSON 또는 XML과 같은 미디어 타입을 사용하여 자원의 표현 방법을 정의합니다.
Code-On-Demand(optional)
Server로부터 스크립트를 받아서 Client에서 실행합니다.
반드시 충족할 필요는 없습니다.
Uniform Interface(인터페이스 일관성)
URI로 지정한 Resource에 대한 조작을 통일되고 한정적인 인터페이스로 수행합니다. HTTP 표준 프로토콜에 따르는 모든 플랫폼에서 사용이 가능합니다.
특정 언어나 기술에 종속되지 않습니다.
확장성
REST API를 구현하는 시스템은 REST가 클라이언트-서버 상호 작용을 최적화하기 때문에 효율적으로 크기 조정할 수 있습니다. 무상태는 서버가 과거 클라이언트 요청 정보를 유지할 필요가 없기 때문에 서버 로드를 제거합니다. 잘 관리된 캐싱은 일부 클라이언트-서버 상호 작용을 부분적으로 또는 완전히 제거합니다. 이러한 모든 기능은 성능을 저하시키는 통신 병목 현상을 일으키지 않으면서 확장성을 지원합니다.
유연성
RESTful 웹 서비스는 완전한 클라이언트-서버 분리를 지원합니다. 각 부분이 독립적으로 발전할 수 있도록 다양한 서버 구성 요소를 단순화하고 분리합니다. 서버 애플리케이션의 플랫폼 또는 기술 변경은 클라이언트 애플리케이션에 영향을 주지 않습니다. 애플리케이션 함수를 계층화하는 기능은 유연성을 더욱 향상시킵니다. 예를 들어, 개발자는 애플리케이션 로직을 다시 작성하지 않고도 데이터베이스 계층을 변경할 수 있습니다.
독립성
REST API는 사용되는 기술과 독립적입니다. API 설계에 영향을 주지 않고 다양한 프로그래밍 언어로 클라이언트 및 서버 애플리케이션을 모두 작성할 수 있습니다. 또한 통신에 영향을 주지 않고 양쪽의 기본 기술을 변경할 수 있습니다.
참조
https://aws.amazon.com/ko/what-is/restful-api/
https://velog.io/@soom/REST-Representational-State-Transfer