기술 쉽게 풀기

Flask 입문자를 위한 실전 가이드 – 웹 서버가 어떻게 작동하는지부터 알아보자

화려하게 2025. 5. 15. 05:26
반응형

 

1. Flask란 무엇인가?

 

 Flask는 파이썬으로 만든 초경량 웹 프레임워크다. 쉽게 말하면, 웹 서버를 매우 간단하게 만들 수 있는 도구라고 보면 된다.

예를 들어, 우리가 웹 브라우저에서 http://localhost:5000에 접속하면 Flask는 그 요청을 받아서, 준비해 둔 내용을 돌려주는 역할을 한다.

이런 흐름을 코드로 보면 다음과 같다:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello EVE!"

 

 이 간단한 코드로, 우리는 나만의 웹서버를 실행할 수 있다. Flask는 마치 ‘카페 사장’처럼, 누가 어떤 주문을 하러 왔는지 확인하고 그에 맞는 ‘응답’을 돌려주는 구조라고 생각하면 쉽다.

 

 

 

 

2. route란? 사용자가 들어오는 입구를 만든다

 

 Flask에서는 @app.route()를 사용해서 ‘경로’를 설정한다. 예를 들어 @app.route("/greet")라고 하면, /greet이라는 주소로 들어온 사람에게 어떤 응답을 줄지 Flask에게 알려주는 것이다.

이걸 가게로 비유하면 다음과 같다:

  • / → 메인 입구
  • /menu → 메뉴판 요청
  • /order → 주문 요청

각 경로마다 Flask는 특정 기능(함수)을 실행시켜서 사용자에게 결과를 돌려준다.

@app.route("/greet")
def greeting():
    return "안녕, 여기는 /greet 경로야!"

 

 

3. GET과 POST – 웹 요청의 두 가지 방식

 

 웹에서 데이터를 주고받는 방식에는 대표적으로 GETPOST가 있다. Flask에서도 이 둘을 쉽게 처리할 수 있다.

예시:

@app.route("/hello", methods=["GET"])
def hello():
    return "Hi!"

@app.route("/send", methods=["POST"])
def send():
    data = request.get_json()
    return jsonify(data)

 

 GET은 정보를 ‘요청’할 때 사용하고, POST는 사용자가 보낸 데이터를 서버에 ‘보낼’ 때 사용한다.

예를 들어 카페에서 “이 메뉴 뭐예요?” 하고 물어보는 건 GET이고, “아이스 아메리카노 하나 주세요!” 하는 건 POST다.

 

 

 

 

4. Flask는 어떻게 응답을 돌려줄까?

 

 웹 서버의 본질은 결국 요청을 받고, 응답을 돌려주는 것이다. 이때 돌려주는 결과를 response라고 부른다.

Flask에서는 다양한 형식으로 응답을 줄 수 있다:

  • 단순 문자열: return "Hello"
  • JSON 데이터: return jsonify({"msg": "ok"})
  • HTML 파일: return render_template("index.html")

즉, 사용자가 어떤 요청을 하느냐에 따라, 우리는 알맞은 데이터를 만들어 HTTP Response로 돌려주는 것이다.

 

 

5. REST API란? 웹에서 데이터를 주고받는 방식

 

 REST API는 웹 서버와 사용자(또는 다른 프로그램) 간에 데이터를 주고받는 규칙이다. 쉽게 말하면, 주소(URL) + 요청 방식(GET/POST 등)으로 소통하는 인터페이스다.

예를 들어:

  • GET /neo/status → 네오의 상태를 확인
  • POST /neo/prompt → 사용자 입력을 네오에게 보내고 응답받음

Flask로 이런 REST API를 만들면, 웹이나 모바일 앱, 심지어 다른 서버에서도 네오와 연결할 수 있다.

@app.route("/neo/prompt", methods=["POST"])
def prompt_handler():
    data = request.get_json()
    user_input = data.get("input", "")
    response = f"네오: '{user_input}'에 대해 생각 중이야..."
    return jsonify({"response": response})

 

 

6. JSON과 jsonify – 데이터를 주고받는 형식

 

 JSON은 데이터를 구조적으로 표현하는 텍스트 형식이다. 예를 들어 딕셔너리처럼 키-값 쌍으로 구성된다:

{
  "name": "네오",
  "mood": "호기심",
  "response": "무엇을 도와드릴까요?"
}

  

 Flask에서는 jsonify()를 이용해 파이썬 딕셔너리를 JSON 형식으로 바꿔준다.

from flask import jsonify

@app.route("/neo/status")
def status():
    return jsonify({"status": "active", "mood": "기대됨"})

 

 

7. 사용자 요청(message)을 처리하는 흐름

 

 Flask에서는 사용자의 입력 데이터를 받아서 처리하고, 그에 맞는 응답을 돌려주는 방식으로 작동한다. 이때 사용자가 보내는 메시지를 우리는 요청 데이터라고 부른다.

 예를 들어, 고객센터처럼 문의 메시지를 받는 웹 API를 만든다고 가정해보겠다.

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route("/contact", methods=["POST"])
def contact():
    data = request.get_json()
    message = data.get("message", "")
    reply = f"'{message}'에 대한 답변을 준비 중입니다."
    return jsonify({"response": reply})

 

 사용자는 이런 형식의 JSON 데이터를 보낼 수 있다:

{
  "message": "오늘 배송 상황이 어떻게 되나요?"
}

 

 서버는 이 메시지를 받아서 처리하고, 다음과 같은 응답을 돌려준다:

{
  "response": "'오늘 배송 상황이 어떻게 되나요?'에 대한 답변을 준비 중입니다."
}

 

 이처럼 사용자의 입력은 message 같은 요청값으로 받아서 서버 내부 로직에 따라 처리한 뒤, 결과를 다시 돌려주는 것이 핵심이다.

 

 

8. 데코레이터(@) – 경로를 함수에 연결하는 스위치

 

 Flask에서 @app.route()는 특정 URL 경로와 함수를 연결해주는 역할을 한다. 이 @ 기호는 Python에서 데코레이터라고 부르며, 함수에 추가적인 역할이나 설정을 부여할 수 있도록 도와준다.

예시를 보면 더 쉽게 이해된다:

@app.route("/greet")
def greet():
    return "안녕, 여기는 /greet 경로야!"

 

 위 코드는 사용자가 /greet라는 경로로 접속했을 때 greet() 함수를 실행시키고, 그 결과를 응답으로 보여준다.

비유하자면, 이런 식으로 생각할 수 있다:

  • / → 메인 입구
  • /menu → 메뉴판 요청
  • /order → 주문 요청

 이 각각의 경로에 어떤 기능을 실행할지 지정해주는 게 바로 @app.route()다.

 

9. response – 사용자의 요청에 대한 응답

 

 웹 서버의 핵심은 요청을 받고 응답을 돌려주는 것이다. 이때 돌려주는 결과를 우리는 response(응답)라고 부른다.

Flask에서는 다양한 방식으로 응답을 만들 수 있다:

  • 단순 문자열 응답: return "Hello"
  • JSON 응답: return jsonify({"msg": "ok"})
  • HTML 파일 응답: return render_template("index.html")

 예를 들어, 아래처럼 간단한 응답을 설정할 수 있다:

@app.route("/text")
def text_response():
    return "텍스트 응답입니다."

@app.route("/data")
def data_response():
    return jsonify({"msg": "네오가 데이터를 잘 처리했습니다."})

 

 사용자가 웹 브라우저나 앱을 통해 서버에 요청을 보내면, Flask는 이에 대한 응답 데이터를 생성하고 되돌려준다. 이 응답은 사용자의 화면에 출력되거나, 다른 기능의 입력으로 활용될 수 있다.

 

 

Flask로 AI와 세상을 잇는 첫걸음

 

 Flask는 초보자도 웹 서버를 빠르게 만들 수 있게 해주는 도구다. 네오 같은 AI와 연결하려면 Flask를 통해 REST API를 만들고, 사용자 입력을 JSON으로 받고, AI 응답을 다시 JSON으로 보내주는 흐름을 만들면 된다.

이번 글에서는 그 핵심 구조를 이해하기 위한 개념들을 비유와 함께 설명해봤다.

 

 

 

반응형