📘REST API, HTTP/HTTP2.0/ HTTP3.0/ HTTPS와 스프링 프레임워크를 사용하는 이유 (다른 프레임워크와의 차이점)

Api란

  • Application Programming Interface
  • 소프트웨어가 다른 소프트웨어로부터 지정된 형식으로 요청, 명령을 받을 수 있는 수단을 api라한다

Rest Api란

  • REST 기반으로 서비스 API를 구현하는 것
  • 정보들이 주고받아지는데 있어서 개발자들 사이에 널리 쓰이는 일종의 형식이다
  • 유체국의 송장처럼 이용자들이 채워넣는 형식이 있듯, 기술이나 제품이 아니라 형식이다
  • 어떤 언어든, 프레임워크든 이 형식에 맞춰서 기능을 만들어 내면 된다
  • 서버에 REST API로 요청을 보낼 때는 HTTP란 규약에 따라 신호를 전송한다
  • GET : 데이터를 Read, 조회하는데 사용함
  • Post : Create, 새로운 정보를 추가하는데 사용 (body에 실어 보낸다)
  • Put, Patch : 변경 , update될 새정보들을 body에 실어 보낸다
  • Delete : 삭제할때

    HTTP요청을 보낼때 어떤 URI에 어떤 메소드를 사용할지(+기타) 개발자들 사이에 널리 지켜지는 약속 형식이기 때문에 , 기술에 구애 받지 않는다.

HTTP

  • HyperText Transfer Protocol의 약자로, HyperText(링크를 통해 다른 문서로 연결될 수 있는 문서)를 Transfer(전송하는) Protocol(규격이 정해진 규칙 체계)입니다
  • 웹에서 클라이언트(브라우저)가 웹 서버(httpd, nginx, apache 등)정보를 주고받을 수 있는 프로토콜입니다
  • 웹에서 정보를 주고받을 수 있는 프로토콜
  • 클라이언트 : HTTP 프로토콜을 사용하여 웹 객체를 요청,수신,표시하는 브라우저
  • 서버 : HTTP프로토콜을 사용하여 브라우저에서 요청한 객체를 전송하는 웹 서버
  • TCP프로토콜 사용
  • 클라이언트는 소켓을 열고 80번 포트를 이용하여 웹서버와 TCP연결 시도
  • 서버는 클라이언트의 연결 요청을 수용
  • HTTP메시지가 웹 서버와 웹 브라우저 간에 송 수신됨
  • 전송후 TCP연결 종료
  • HTTP는 연결 상태 유지하지 않음
  • 서버는 클라이언트의 과거 요청 정보를 관리하지 않음

HTTP 업로드 요청 방식

  1. Post 방식
    • 웹 페이지는 폼 입력 형식을 사용함
    • 입력 내용이 entity body 형식에 내장되어 서버로 전송됨
  2. GET 방식
    • 일반적으로 GET 방식 사용
    • 입력 내용이 URL 필드의 요청라인에 포함되어 전송됨

HTTP 요청 형식

  1. POST 메소드
    • 폼 입력 포함 된 웹 페이지 수신
    • 사용자 입력이 클라이언트의 바디 중 엔터티에 포함되어 전송
  2. GET메소드(서버에 데이터 전송용)
    • HTTP GEt 요청 메시지의 URL필드에 ? 표시되어 기술
  3. HEAD 메소드
    • HTTP GET 메소드에 기술한 URL에 대한 헤더만 요청
  4. PUT 메소드
    • 서버에 파일 업로드 시 사용
    • HTTP POST 메소드에 기술된 경로의 파일 내용을 새로 대체함

HTTP 응답 상태 코드

  1. 200ok : 요청 성공
  2. 301 :요청 객체가 이동 되었으며, 새위치는 메시지에 포함된 로케이션 참조
  3. 400 : 요청 메시지를 서버가 이해할 수 없음
  4. 404 : 요청 문서를 서버에서 찾을 수 없음
  5. 505 : 요청된 HTTP 버전을 서버가 지원하지 않음

HTTP/2

  • 목적 : 다중 HTTP 객체 요청시 지연 감소
  • HTTP1.1 은 단일 연결 FCFS로 앞에 긴 객체 전송 완료 될때 까지 뒤에 객체 대기
  • 서버에서 클라이언트로 다중 객체 전송 시 유연성 향상
  • 객체를 프레임으로 분할하고 프레임 단위로 전송
  • 단점인 무거운 헤더 정보를 개선하기 위해 HTTP/2는 Hashtable과 Huffman Encoding 기법을 사용하여 헤더 크기를 줄인다

HPPT/3

  • HTTP/3는 QUIC라는 프로토콜을 이용하며 QUIC는 UDP를 사용하여 인터넷 연결을 합니다. 기존 HTTP는 신뢰성을 위해 TCP와 속도를 위한 UDP 방식을 동시에 사용하였지만 HTTP/3는 QUIC기반으로 UDP만을 사용합니다.

HTTPS

  • TCP/IP 스택을 통해 HTTP를 전송하는 대신, 암호화된 전송 계층인 SSL을 만들었습니다. 웹에서 주소록이나 이메일, 사용자의 위치 정보나 개인정보 등에 접근하면서 점점 보안의 중요성이 대두되면서 생겨났으며, SSL은 TLS로 발전해왔습니다. 현재는 SSL이 아닌 TLS을 사용하지만, 보편적으로 SSL이라고 부르기 때문에 SSL/TLS을 혼용하여 부른다고 합니다.

Spring Framework

스프링 프레임워크(영어: Spring Framework)는 자바 플랫폼을 위한 오픈 소스 애플리케이션 프레임워크로서 간단히 스프링(Spring)이라고도 한다. 동적인 웹 사이트를 개발하기 위한 여러 가지 서비스를 제공하고 있다. 대한민국 공공기관의 웹 서비스 개발 시 사용을 권장하고 있는 전자정부 표준프레임워크의 기반 기술로서 쓰이고 있다.

Spring Framework의 특징

  • 경량 컨테이너로서 자바 객체를 직접 관리한다. 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
  • 스프링은 Plain Old Java Object 방식의 프레임워크이다. 일반적인 J2EE 프레임워크에 비해 구현을 위해 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다.
  • 스프링은 제어 반전(IoC : Inversion of Control)을 지원한다. 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
  • 스프링은 의존성 주입(DI : Dependency Injection)을 지원한다. 각각의 계층이나 서비스들 간에 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  • 스프링은 관점 지향 프로그래밍(AOP : Aspect-Oriented Programming)을 지원한다. 따라서 트랜잭션이나 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 기능의 경우 해당 기능을 분리하여 관리할 수 있다.
  • 스프링은 영속성과 관련된 다양한 서비스를 지원한다. iBATIS나 하이버네이트 등 이미 완성도가 높은 데이터베이스 처리 라이브러리와 연결할 수 있는 인터페이스를 제공한다.
  • 스프링은 확장성이 높다. 스프링 프레임워크에 통합하기 위해 간단하게 기존 라이브러리를 감싸는 정도로 스프링에서 사용이 가능하기 때문에 수많은 라이브러리가 이미 스프링에서 지원되고 있고 스프링에서 사용되는 라이브러리를 별도로 분리하기도 용이하다.

Spring Framework의 장점

1.복잡함에 반기가 들어서 만들어진 프레임워크

  • EJB에 비해 가볍기 때문에 엔터프라이즈(구조가 복잡하고 많은량의 소스코드)급의 시스템을 더 빠른 시간에 작성 가능.
  1. 프로젝트의 전체 구조를 설계할때 유용한 프레임워크
  • 기존의 프레임워크들은 웹, 또는 하드웨어, 데이터베이스등 전문적인 영역만 지원하는 경우가 많은데, 스프링은 어느 한 분야에 집중하기 보다, 전체를 설계하는 용도로 사용
  1. 다른 프레임워크의 포용
  • 스프링은 전체 구조에 집중했기에 특정영역의 프레임워크와 공존하는 방식으로 사용 가능.

IoC, DI 등 스프링의 특징이 개발자가 전체적으로 신경써야할 부분에 대해서 스트레스를 줄여주고 비지니스 로직에 집중할 수 있기 때문에 생산성 향상됩니다.