Python/Python Flask

Python Flask 라우팅(Routing)의 개념

임베디드 친구 2025. 8. 26. 20:28
728x90
반응형

Python Flask 라우팅(Routing)의 개념

Flask는 Python으로 작성된 마이크로 웹 프레임워크로, 간단하면서도 유연한 방식으로 웹 애플리케이션을 개발할 수 있도록 돕습니다. Flask의 핵심 기능 중 하나는 라우팅(Routing)입니다. 라우팅은 웹 애플리케이션에서 URL과 실행될 함수(뷰 함수)를 연결하는 메커니즘으로, 사용자가 특정 URL로 요청을 보낼 때 어떤 로직을 실행할지 정의하는 역할을 합니다.

이 글에서는 Flask의 라우팅 개념과 이를 구현하는 방법을 예제와 함께 자세히 설명하겠습니다.


1. 라우팅의 기본 개념

라우팅은 사용자의 요청을 처리하기 위해 필요한 첫 번째 단계입니다. Flask에서는 @app.route 데코레이터를 사용하여 URL과 뷰 함수를 연결합니다. 사용자는 특정 URL에 요청을 보냄으로써 애플리케이션의 특정 동작을 트리거할 수 있습니다.

기본 예제

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Welcome to the Home Page!"

if __name__ == '__main__':
    app.run(debug=True)

위 코드에서 @app.route('/')는 루트 URL (/)에 대한 요청을 처리하도록 home 함수를 연결합니다. 결과적으로 사용자가 http://127.0.0.1:5000/로 접속하면 "Welcome to the Home Page!" 메시지를 확인할 수 있습니다.


2. 동적 라우팅

동적 라우팅은 URL의 일부를 변수로 받아 요청에 따라 동작을 다르게 처리할 수 있도록 합니다. 이를 통해 사용자 정의 데이터와 상호작용할 수 있습니다.

동적 라우팅 예제

@app.route('/user/<username>')
def show_user_profile(username):
    return f"User: {username}"

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return f"Post ID: {post_id}"
  • <username>: 문자열 변수를 받습니다.
  • <int:post_id>: 정수형 변수를 받습니다.

사용 예시

  • http://127.0.0.1:5000/user/johnUser: john
  • http://127.0.0.1:5000/post/42Post ID: 42

3. HTTP 메소드와 라우팅

기본적으로 Flask의 라우트는 GET 요청만 처리합니다. 그러나 methods 매개변수를 사용하여 GET, POST, PUT, DELETE 등의 HTTP 메소드를 처리할 수 있습니다.

HTTP 메소드 예제

@app.route('/submit', methods=['GET', 'POST'])
def submit():
    if request.method == 'POST':
        return "Form Submitted via POST!"
    return "Submit Page via GET!"
  • GET: 페이지를 요청합니다.
  • POST: 데이터를 서버로 전송합니다.

사용 예시

  • GET 요청 → "Submit Page via GET!"
  • POST 요청 → "Form Submitted via POST!"

4. URL 빌딩

Flask에서는 url_for 함수를 사용하여 URL을 동적으로 생성할 수 있습니다. 이는 URL 경로가 변경되더라도 코드 수정을 최소화할 수 있도록 도와줍니다.

URL 빌딩 예제

from flask import url_for

@app.route('/about')
def about():
    return "About Page"

@app.route('/home')
def home():
    return f"Go to About Page: <a href='{url_for('about')}'>About</a>"

결과

http://127.0.0.1:5000/home에 접속하면 "About Page" 링크가 표시됩니다.


5. 라우트의 고급 설정

5.1 라우트의 기본값 지정

defaults 매개변수를 사용하여 URL 변수의 기본값을 지정할 수 있습니다.

@app.route('/user/<username>/<int:age>', defaults={'age': 18})
def user_profile(username, age):
    return f"Username: {username}, Age: {age}"

사용 예시

  • /user/john/25Username: john, Age: 25
  • /user/johnUsername: john, Age: 18

5.2 라우트에 별칭 적용

endpoint 매개변수를 사용하여 특정 함수에 별칭을 부여할 수 있습니다.

@app.route('/profile', endpoint='user_profile')
def profile():
    return "User Profile Page"

url_for('user_profile')로 동적으로 URL을 생성할 수 있습니다.


6. Flask 라우팅의 활용 사례

6.1 API 구현

@app.route('/api/data', methods=['GET'])
def get_data():
    return {"key": "value", "message": "This is an API response"}

6.2 RESTful 구조

RESTful API는 자원을 명확하게 정의하고 HTTP 메소드를 활용합니다.

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return "List of tasks"

@app.route('/tasks', methods=['POST'])
def create_task():
    return "Task created"

@app.route('/tasks/<int:task_id>', methods=['PUT'])
def update_task(task_id):
    return f"Task {task_id} updated"

@app.route('/tasks/<int:task_id>', methods=['DELETE'])
def delete_task(task_id):
    return f"Task {task_id} deleted"

7. 마무리

Flask의 라우팅은 간단한 웹 페이지부터 복잡한 API까지 다양한 애플리케이션을 손쉽게 개발할 수 있도록 돕습니다. 위에서 설명한 개념과 예제를 참고하여 Flask 애플리케이션의 라우팅을 설계하고 확장해 보세요.

728x90
반응형

'Python > Python Flask' 카테고리의 다른 글

Python 첫 번째 Flask 애플리케이션 만들기  (0) 2025.08.25
Python Flask란 무엇인가?  (0) 2025.08.24