∟Framework/∟Django

Django - Request & Response

최 수빈 2025. 1. 7. 23:32

 

요청과 응답

 

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 개발 및 클라이언트와의 데이터 교환 처리

 

목표

• 데이터 처리의 안정성, 효율성, 보안성 유지

• 프론트엔드와의 데이터 연동 최적화

 

클라이언트와 서버의 데이터 흐름

  1. 클라이언트가 요청(Request)을 보냄
  2. 서버는 요청을 처리하고, 응답(Response)을 생성
  3. 클라이언트는 받은 응답을 처리하여 사용자에게 보여줌

 

요청-응답 주기

• 요청과 응답은 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