REST API / Server / HTTP

wisdom·2022년 8월 9일
0

백엔드 개발자라면?

목록 보기
11/42

개념 정리

공부하면서 중요하다고 생각한 개념을 정리했습니다.

REST가 뭘까

  • HTTP를 잘 사용하기 위한 아키텍처 스타일
  • REST는 URI와 HTTP 메소드를 사용해서 자원과 행위를 표현합니다.
  • REST의 원칙을 지키면서 API의 의미를 표현하기 쉽고, 파악하기 쉽게 하는 것을 Restful 하다고 한다.

API

  • Application Programming Interface

REST API

  • REpresentational State Transfer
  • 인터넷 상의 시스템 간 상호 운용성을 제공하는 방법 중 하나
    • 인터넷 상의 시스템?
      • client to client
      • client to server
      • server to server
  • REST한 방식으로 데이터를 상호교환하게 설계된 API를 말한다.
    • HTTP를 잘 사용하기 위해, URI와 HTTP메소드를 사용해서, URL로 어떤 자원에 접근할 것인지, 메소드로 어떤 행위를 할 것인지 표현하여 설계된 API를 말한다.

REST API의 필수 제약 조건들

  • Clinet-Server
    • client는 server에서 어떤 일을 수행하더라도 내부 작업은 알 필요가 없다.
    • 클라이언트와 서버가 서로 독립적이라 별도의 진화가 가능함
  • Stateless
    • 클라이언트에서 서버로 각 요청에는 그 요청에 필요한 모든 정보가 포함되어야 한다.
  • Cache
    • 요청에 대한 응답 내의 데이터에 해당 요청은 캐시가 가능한지 불가능한지 명시해야 한다.
    • 보통 HTTP Header에 cache-control 헤더를 이용한다.
  • Uniform Interface

Uniform Interface의 4가지 제약 조건

  1. Resource-Based
  2. Manipulation of resources through representations
  3. Self-Descriptive Message
  4. Hypermedia As The Engine of Application State

Reestful API

  • REST하게 만든 API를 RESTful API라고 한다.

REST API 가이드
그런 REST API로 괜찮은가

Client 와 Server

  • Client
    • 웹브라우저는 웹서버로 접속하기 위한 터미널
    • 서버에게 자료를 request 하고, 서버가 주는 response 를 제공받는다.

Web Server와 WAS의 차이

Web Server

  • HTTP 프로토콜을 기반으로 하여 클라이언트(웹 브라우저 또는 웹 크롤러)의 요청을 서비스 하는 기능을 담당
  • 정적 켄텐츠를 제공하기도 하고 동적 컨텐츠 제공을 위한 요청을 WAS에 전달하기도 한다.
  • 예로는 Apache Server, Nginx가 있다.

WAS(= Web Server + Web Container)

  • Web Application Server
  • DB 조회나 다양한 로직 처리를 요구하는 동적인 컨텐츠를 제공하기 위해 만들어진 Application Server
  • 웹 컨테이너(Web Container) 혹은 서블릿 컨테이너(Servlet Container)라고도 불린다.
  • 현재는 WAS가 가지고 있는 Web Server도 정적인 컨텐츠를 처리하는 데 있어서 성능상 큰 차이가 없다.
  • 여러 개의 트랜잭션 관리 가능
  • 업무를 처리하는 비즈니스 로직 수행
  • 예로는 톰캣이 있다.

HTTP 프로토콜

  • HTTP(Hypertext Transfer Protocol)는 TCP/IP 위에서 돌아가는 통신 프로토콜
    • TCP(Transmission Control Protocol)
      • 전송 제어 프로토콜로 어느 한쪽 노드에서 다른 한쪽 노드로 데이터를 보낼 수 있게 해준다.
    • IP(Internet Protocol)
      • 인터넷 규약 주소로 네트워크 상의 주소를 의미합니다
  • 프로토콜이 왜 필요할까?
    • 네트워크 상에서 노드 간의 통신에는 정해진 규격이 필요하기 때문.

HTTP 특징

  • Connectionless
    • 비연결성
      • HTTP는 필요한 순간에만 네트워크를 이용해 클라이언트와 서버가 연결되고 데이터를 주고받는다는 의미
  • Stateless
    • 무상태
      • 데이터를 주고받을 때 상태를 포함하지 않는다는 의미
        • 데이터를 주고받을 때 상태를 포함하지 않는다는 건 지속적으로 발생하는 웹 통신의 요청과 응답을 매번 독립된 요청과 응답으로 판별한다는 말과 같다.
          • 다르게 말하면 클라이언트와 서버는 수없이 많이 통신해도 서로를 모른다는 뜻
      • 무상태는 항상 처음 보는 것처럼 데이터를 주고받을 수 있게 상태(식별 값)를 지니지 않는다는 의미
profile
문제를 정의하고, 문제를 해결하는

0개의 댓글