요청과 응답
Client ---- Request ----> Server
Client <--- Response ---- Server
요청(Request)
클라이언트(웹 브라우저, 모바일 앱 등)가 서버에게 보내는 메시지
클라이언트의 정보, 요청의 형식, 인증 정보 등을 포함
데이터를 포함하며, JSON이나 HTML 폼 데이터와 같은 형식으로 전달
클라이언트가 요청하는 것이 무엇인지 URL을 보면 파악할 수 있음
- 요청 메서드: 작업의 종류
- GET: 데이터 조회
- POST : 데이터 생성
- PUT : 데이터 수정
- DELETE : 데이터 삭제
• URL: 요청의 대상(리소스)
• 헤더(Header): 요청에 대한 부가 정보 (예: 인증 토큰)
• 본문(Body): 요청 데이터 (주로 JSON 형식)
POST /api/user
Host: example.com
Authorization: Bearer token
Content-Type: application/json
{
"name": "John",
"email": "john@example.com"
}
응답(Response)
서버가 요청을 처리한 결과를 클라이언트에 보내는 메시지
서버가 클라이언트의 요청을 받고 처리한 후에 클라이언트에게 결과를 전송
결과에는 여러 가지 부가적인 정보 포함
HTML, JSON, XML 등의 형식일 수 있으며, 클라이언트가 요청한 작업에 따라 다양한 형태로 전송
- 상태 코드(Status Code): 요청 처리 결과
- 200: 성공 (OK)
- 201: 생성됨 (Created)
- 400: 잘못된 요청 (Bad Request)
- 401: 인증 실패 (Unauthorized)
- 404: 리소스 없음 (Not Found)
- 500: 서버 오류 (Internal Server Error)
• 헤더(Header): 응답 메타데이터
• 본문(Body): 응답 데이터 (HTML, JSON 등)
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": 1,
"name": "John",
"email": "john@example.com"
}
웹 브라우저
인터넷에서 사용자가 원하는 웹 페이지를 탐색하여 보여주고 하이퍼링크를 통해 페이지 간 이동을 돕는 프로그램
• HTML, CSS, JavaScript 등 웹 언어를 우리가 이해할 수 있는 화면으로 변환(렌더링)
웹 페이지(Web Page)
브라우저에서 보는 화면 하나하나
• 작성된 HTML 파일이 곧 웹 페이지, 이는 정적인 화면일 수도 있고 동적으로 반응할 수도 있음
정적 웹 페이지 vs. 동적 웹 페이지
정적 웹 페이지 (Static Web Page)
• 작성된 상태 그대로 제공
• 동일한 콘텐츠가 모든 사용자에게 동일하게 표시
• HTML 파일과 같은 간단한 형태로 구현됨
예: 개인 포트폴리오, 간단한 회사 소개 웹사이트
동적 웹 페이지 (Dynamic Web Page)
• 요청에 따라 콘텐츠나 화면 구성이 달라짐
• 사용자 정보나 요청에 따라 다른 데이터를 표시
• 서버와의 통신이 필요하며, 데이터베이스 및 비즈니스 로직을 활용
예: 이메일 클라이언트, 소셜 미디어, 쇼핑몰
요청을 받아서 적절한 응답을 만들어주는 주체가 필요 => Django
프론트엔드와 백엔드
프론트엔드 개발
사용자가 보는 화면(클라이언트 측)을 개발
웹사이트의 UI/UX 디자인을 구현하고, 사용자와의 상호작용을 만듦
주로 사용하는 기술
• HTML, CSS, JavaScript
• JavaScript 프레임워크/라이브러리: React, Angular, Vue.js
주요 작업
• 화면 구성 및 스타일링
• 사용자 입력 처리
• 백엔드와의 API 통신 (RESTful, GraphQL 등)
• 상태 관리 (Redux, MobX 등)
• 반응형 디자인 및 웹 접근성 고려
목표
• 사용자 친화적인 인터페이스 제공
• 원활한 사용자 경험(UX) 보장
백엔드 개발
사용자가 볼 수 없는 서버 측(백엔드)을 개발
주로 사용하는 기술
• Python(Django, Flask), Java(Spring), JavaScript(Node.js), Ruby(Rails), PHP(Laravel)
• 데이터베이스: MySQL, PostgreSQL, MongoDB, Redis
주요 작업
• 데이터베이스 관리
• 비즈니스 로직 구현
• 서버 보안, 사용자 인증/권한 관리
• API 개발 및 클라이언트와의 데이터 교환 처리
목표
• 데이터 처리의 안정성, 효율성, 보안성 유지
• 프론트엔드와의 데이터 연동 최적화
클라이언트와 서버의 데이터 흐름
- 클라이언트가 요청(Request)을 보냄
- 서버는 요청을 처리하고, 응답(Response)을 생성
- 클라이언트는 받은 응답을 처리하여 사용자에게 보여줌
요청-응답 주기
• 요청과 응답은 HTTP 프로토콜을 기반으로 진행
• 서버와 클라이언트 간 통신은 주로 RESTful API 또는 GraphQL을 통해 이루어짐
정적 웹 페이지의 한계 / 동적 웹 페이지의 발전
• 정적 웹 페이지는 변경이 어렵고 확장성이 부족
• 동적 웹 페이지는 데이터를 동적으로 처리하여 사용자 경험을 대폭 개선
프론트엔드와 백엔드 협업
• 프론트엔드는 사용자 인터페이스를 개발하고, 백엔드는 데이터와 비즈니스 로직을 처리
• API 설계 및 데이터 포맷(JSON/XML 등)이 협업의 핵심
'∟Framework > ∟Django' 카테고리의 다른 글
Django - Design Patterns (0) | 2025.01.08 |
---|---|
Django - Client↔Server (2) | 2025.01.07 |
Django - App (1) | 2025.01.06 |
Django - Project (3) | 2025.01.03 |
Django 개발 환경 구성 (9) | 2025.01.02 |