Flask는 Python으로 웹 서버를 만들기 위한 마이크로 프레임워크입니다.
- 관련글 -> 마이크로 프레임워크 Vs 풀스택 프레임워크
1. from flask import Flask, request, jsonify
- Flask: 웹 애플리케이션을 생성하는 핵심 클래스
- request: 클라이언트(예: 브라우저)가 보낸 요청 데이터를 읽는 객체
- jsonify: Python 딕셔너리를 JSON 형식으로 변환해 응답하는 함수
2. 기본 코드 구조
from flask import Flask, request, jsonify
app = Flask(__name__) # Flask 앱 생성
@app.route('/api/data', methods=['POST'])
def handle_data():
# 1. 클라이언트의 JSON 데이터 읽기
data = request.get_json()
# 2. 데이터 처리 (예: 이름 추출)
name = data.get('name', 'Guest')
# 3. JSON 응답 반환
return jsonify({
"message": f"Hello, {name}!",
"status": "success"
})
if __name__ == '__main__':
app.run(debug=True) # 서버 실행
3. 코드 설명
(1) app = Flask(__name__)
- 역할: Flask 애플리케이션 인스턴스 생성
- 예시:
app
은 웹 서버의 핵심 엔진입니다. 모든 설정과 라우팅의 시작점이에요.
(2) @app.route('/api/data', methods=['POST'])
- 역할: 경로(URL)와 HTTP 메서드를 정의
- 예시:
http://localhost:5000/api/data
주소로 POST 요청이 오면 아래 함수 실행
(3) request.get_json()
- 역할: 클라이언트가 보낸 JSON 데이터를 Python 딕셔너리로 변환
- 예시:
→// 클라이언트가 보낸 데이터 { "name": "Alice", "age": 25 }
data = {"name": "Alice", "age": 25}
(4) jsonify()
- 역할: Python 딕셔너리를 JSON 응답으로 변환
- 예시:
→ 클라이언트는return jsonify({"message": "Success"})
{"message": "Success"}
JSON을 받음
4. request
객체의 주요 기능
메서드 | 설명 | 예시 |
---|---|---|
request.args |
URL 쿼리 파라미터 읽기 | ?id=123 → request.args.get('id') |
request.form |
HTML 폼 데이터 읽기 | <input name="email"> → request.form['email'] |
request.files |
업로드 파일 읽기 | request.files['file'] |
request.headers |
HTTP 헤더 읽기 | request.headers.get('User-Agent') |
5. 실행 & 테스트
- 서버 실행: 터미널에서
python app.py
- 테스트: Postman이나 curl로 POST 요청 전송
curl -X POST http://localhost:5000/api/data \ -H "Content-Type: application/json" \ -d '{"name": "Bob"}'
- 응답:
{ "message": "Hello, Bob!", "status": "success" }
6. 왜 JSON을 사용하나요?
- JSON은 데이터 교환의 국제 표준 형식입니다.
- 프론트엔드(React)와 백엔드(Python)가 서로 다른 언어로 소통할 때 유용합니다.
- 모든 프로그래밍 언어가 JSON을 지원합니다.
이제 flask
, request
, jsonify
가 어떻게 동작하는지 이해되셨나요? 😊
'Programming' 카테고리의 다른 글
풀스택 프레임워크 Vs 마이크로 프레임워크 비교 (1) | 2025.02.17 |
---|---|
쇼핑몰 관리자 페이지에 쓰이는 코드 모음 (0) | 2025.02.16 |
쇼핑몰 재고관리에 쓰이는 코드 모음 (0) | 2025.02.15 |
API(Application Programming Interface)의 원리 (0) | 2025.02.14 |