Network
- 여러 대의 컴퓨터 또는 장비가 서로 연결되어 정보를 주고 받을 수 있게 도와주는 기술
- 클라이언트가 요청하면, 서버가 요청에 대한 응답을 수행한다.
Client & Server
- 사용자는 브라우저 등(Client)을 이용해 서버(Server)에 정보(Data)를 요청(Request)하고 응답(Response)를 받는다.
- 서버 또한 클라이언트가 될 수 있다. (외부 서버에 API 요청하는 경우 등)
- 요청이 서버에 도달하기 위해서는 IP 주소, 포트 번호가 필요하다.
Web Server & Web Application Server
- Web Server
- 클라이언트로부터 HTTP 요청을 받아 정적인 콘텐츠를 사용자에게 전달하는 역할
- Web Application Server
- 게시물 조회나 정렬처럼 다양한 동적 로직을 수행하는 프로그램을 동작시키는 역할
현대의 프레임워크는 분리된 두 구조의 장점을 유지하면서, 편의성과 생산성을 높이기 위해 웹 서버와 WAS의 기능을 통합하는 방향으로 발전하고 있다.
- Spring Boot의 내장 Tomcat, NestJS의 내장 Express
- 통합을 통해 개발효율의 증가, 과도한 서버 설정 및 관리의 간소화
요청과 응답의 흐름
- 특정 사이트의 주소를 입력하는 순간, 웹 브라우저가 해당 URL 주소로 웹 서버에 홈페이지를 요청
- 브라우저는 먼저 DNS 조회를 통해 해당 웹 사이트의 IP 주소를 찾게 됨, IP 조소로 서버에 요청하는데 HTTP를 통해 요청과 데이터가 전송
- Web Server는 HTTP 메시지를 확인
- 요청에서 필요한 추가 데이터가 있을 경우 WAS에 전달
- WAS는 필요한 데이터를 내부 로직, 동적 처리, DB 연동 등을 통해 데이터 가공
- WAS는 데이터 처리 결과를 Web Server에 전달
- Web Server는 WAS로 부터 반환된 데이터를 활용하여 HTML, CSS, Image 등 정적 페이지를 구성하고, 결과를 클라이언트측 웹 브라우저에 출력
API (Application Programming Interface), RESTful API
Interface
- 소프트웨어공학 또는 일반적 의미
- 서로 다른 두 개의 시스템이나 장치 간 정보나 신호를 주고받는 접점 또는 경계면
- ex) 컴퓨터와 주변 장치(프린터) 간 연결 지점이나 소프트웨어 간 통신 방식
- API, UI/UX에서 사용되는 인터페이스의 의미
- 프로그래밍 언어적 의미
- 클래스가 구현해야 하는 멤버 집합의 정의
- 공통으로 연결부, 매개체라는 의미로 해석 가능
API
- 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙
- 개발자는 다른 애플리케이션들이 서로 통신할 수 있도록 API(규칙)를 표시하거나 생성해야 한다.
- “약속”, “개발자의 애플리케이션 사용 설명서”
- 약속한 방식의 API 요청을 수행하면, 정해진 결과물을 반환하는 것을 정의 한다.
- 핵심 요소
- Endpoint
- HTTP Method
- 요청과 응답 데이터 형태
- Status Code
- Parameter(Query String, PathVariable)
Rest API
- REST (Representational State Transfer)
- API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처
- 자원(Resource) 중심으로 설계, URI로 식별
- ex) /users, /products
- HTTP Method 매칭
- GET: 자원 조회
- POST: 자원 생성
- UPDATE: 자원 갱신
- DELETE: 자원 삭제
- 클라이언트는 서버로부터 자원의 표현을 요청하고, 서버는 해당 표현을 반환한다.
- 인터페이스 일관성 확보
- 자원 식별, 표현, 메시지 전송 방식 등을 표준화
- api를 쉽게 이해할 수 있도록 구성, 표현
- RESTful API
- REST 설계 규칙을 따라 설계하고 지향하는 API
- 이러한 규칙들을 통해 클라-서버 간 상호작용을 효율적이고 유연하게 만들며, 웹 서비스의 확장성과 유지보수성을 높일 수 있음
HTTP
- Protocol
- 전자기기 간 원할한 통신을 위해 지키기로 약속한 규칙의 집합
- HTTP
- 데이터를 주고 받는 양식을 정의한 “통신 규약”
- 대부분의 웹 서버가 HTTP를 기반으로 데이터를 송/수신한다.
- Methods
- GET: 리소스 조회 → Read
- POST: 요청 데이터 처리, 등록에 사용 → Create
- PUT: 리소스 대체, 리소스가 없으면 생성 → Update
- DELETE: 리소스 삭제 → Delete
- PATCH: 리소스 부분 변경
- HEAD: 상태 줄과 헤더만 반환
- OPTIONS: 해당 리소스에 대한 통신 가능 옵션을 설명
- CONNECT: 대상 자원으로 식별되는 서버에 대한 양방향 연결 터널 설정
- TRACE: 보낸 통신이 어느 지점에서 에러가 발생했는지 추적
- Status Code
- 1xx: Informational
- 2xx: Successful
- 3xx: Redirection
- 4xx: Client Error
- 5xx: Server Error
'Computer Science' 카테고리의 다른 글
[CS] RDBMS / NoSQL (0) | 2025.01.14 |
---|---|
[CS] Query String / Path Variable (0) | 2025.01.13 |
[CS] 도메인 접속 시, Server-Client 간 흐름 (0) | 2025.01.09 |
[CS] 객체 지향 프로그래밍(OOP) 5원칙 (0) | 2025.01.09 |
[CS] 클래스와 인스턴스 (0) | 2025.01.09 |