Python Web Development Basics

12.  웹 개발 기초(Web Development Basics)

Flask를 이용한 웹 애플리케이션 개발 기초 (Basic Web Application Development with Flask)

Flask는 Python으로 작성된 경량 웹 프레임워크로, 간단하고 유연한 웹 애플리케이션을 개발할 수 있게 해줍니다. 기본적인 웹 애플리케이션을 만드는 방법을 살펴보겠습니다.

먼저 Flask를 설치합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip install Flask
pip install Flask
pip install Flask

기본적인 Flask 애플리케이션은 다음과 같이 구성됩니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from flask import Flask
app = Flask(__name__)
@app.route('/')
def home():
return "Hello, Flask!"
if __name__ == '__main__':
app.run(debug=True)
from flask import Flask app = Flask(__name__) @app.route('/') def home(): return "Hello, Flask!" if __name__ == '__main__': app.run(debug=True)
from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

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

위 코드는 간단한 Flask 애플리케이션을 정의합니다. @app.route('/') 데코레이터는 루트 URL (/)에 대해 home 함수를 실행하도록 설정합니다. app.run(debug=True)는 디버그 모드에서 애플리케이션을 실행합니다.

Django를 이용한 웹 애플리케이션 개발 기초 (Basic Web Application Development with Django)

Django는 Python으로 작성된 강력한 웹 프레임워크로, 대규모 웹 애플리케이션을 개발하는 데 적합합니다. Django 프로젝트를 생성하고 간단한 애플리케이션을 만드는 방법을 살펴보겠습니다.

먼저 Django를 설치합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
pip install Django
pip install Django
pip install Django

새로운 Django 프로젝트를 생성합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
django-admin startproject myproject
cd myproject
django-admin startproject myproject cd myproject
django-admin startproject myproject
cd myproject

이제 애플리케이션을 생성합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
python manage.py startapp myapp
python manage.py startapp myapp
python manage.py startapp myapp

myapp 디렉토리의 views.py 파일을 다음과 같이 수정합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from django.http import HttpResponse
def home(request):
return HttpResponse("Hello, Django!")
from django.http import HttpResponse def home(request): return HttpResponse("Hello, Django!")
from django.http import HttpResponse

def home(request):
    return HttpResponse("Hello, Django!")

프로젝트의 urls.py 파일을 다음과 같이 수정하여 home 뷰를 연결합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from django.contrib import admin
from django.urls import path
from myapp import views
urlpatterns = [
path('admin/', admin.site.urls),
path('', views.home),
]
from django.contrib import admin from django.urls import path from myapp import views urlpatterns = [ path('admin/', admin.site.urls), path('', views.home), ]
from django.contrib import admin
from django.urls import path
from myapp import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home),
]

애플리케이션을 실행합니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
python manage.py runserver
python manage.py runserver
python manage.py runserver

이제 브라우저에서 http://127.0.0.1:8000/에 접속하면 “Hello, Django!” 메시지를 확인할 수 있습니다.

HTTP 프로토콜과 RESTful API (HTTP Protocol and RESTful API)

HTTP는 웹 상에서 데이터를 주고받기 위한 프로토콜입니다. 클라이언트가 서버에 요청을 보내고, 서버가 응답을 반환하는 방식으로 동작합니다. RESTful API는 HTTP 프로토콜을 사용하여 자원(Resource)을 정의하고 조작하는 방법론입니다.

HTTP 요청 메서드

  • GET: 서버에서 데이터를 조회합니다.
  • POST: 서버에 데이터를 생성합니다.
  • PUT: 서버의 데이터를 수정합니다.
  • DELETE: 서버의 데이터를 삭제합니다.

RESTful API 예제

Flask를 사용하여 간단한 RESTful API를 만들어 보겠습니다.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
from flask import Flask, jsonify, request
app = Flask(__name__)
# 샘플 데이터
users = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'}
]
@app.route('/users', methods=['GET'])
def get_users():
return jsonify(users)
@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
user = next((u for u in users if u['id'] == user_id), None)
if user:
return jsonify(user)
return jsonify({'error': 'User not found'}), 404
@app.route('/users', methods=['POST'])
def create_user():
new_user = request.get_json()
users.append(new_user)
return jsonify(new_user), 201
@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
user = next((u for u in users if u['id'] == user_id), None)
if user:
data = request.get_json()
user.update(data)
return jsonify(user)
return jsonify({'error': 'User not found'}), 404
@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
global users
users = [u for u in users if u['id'] != user_id]
return '', 204
if __name__ == '__main__':
app.run(debug=True)
from flask import Flask, jsonify, request app = Flask(__name__) # 샘플 데이터 users = [ {'id': 1, 'name': 'Alice'}, {'id': 2, 'name': 'Bob'} ] @app.route('/users', methods=['GET']) def get_users(): return jsonify(users) @app.route('/users/<int:user_id>', methods=['GET']) def get_user(user_id): user = next((u for u in users if u['id'] == user_id), None) if user: return jsonify(user) return jsonify({'error': 'User not found'}), 404 @app.route('/users', methods=['POST']) def create_user(): new_user = request.get_json() users.append(new_user) return jsonify(new_user), 201 @app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): user = next((u for u in users if u['id'] == user_id), None) if user: data = request.get_json() user.update(data) return jsonify(user) return jsonify({'error': 'User not found'}), 404 @app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): global users users = [u for u in users if u['id'] != user_id] return '', 204 if __name__ == '__main__': app.run(debug=True)
from flask import Flask, jsonify, request

app = Flask(__name__)

# 샘플 데이터
users = [
    {'id': 1, 'name': 'Alice'},
    {'id': 2, 'name': 'Bob'}
]

@app.route('/users', methods=['GET'])
def get_users():
    return jsonify(users)

@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        return jsonify(user)
    return jsonify({'error': 'User not found'}), 404

@app.route('/users', methods=['POST'])
def create_user():
    new_user = request.get_json()
    users.append(new_user)
    return jsonify(new_user), 201

@app.route('/users/<int:user_id>', methods=['PUT'])
def update_user(user_id):
    user = next((u for u in users if u['id'] == user_id), None)
    if user:
        data = request.get_json()
        user.update(data)
        return jsonify(user)
    return jsonify({'error': 'User not found'}), 404

@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    global users
    users = [u for u in users if u['id'] != user_id]
    return '', 204

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

위 예제에서 /users 엔드포인트는 GET 요청으로 모든 사용자를 조회하고, POST 요청으로 새로운 사용자를 생성합니다. /users/<user_id> 엔드포인트는 GET 요청으로 특정 사용자를 조회하고, PUT 요청으로 사용자를 업데이트하며, DELETE 요청으로 사용자를 삭제합니다.

이와 같이 Flask와 Django를 사용하여 웹 애플리케이션을 개발하고, RESTful API를 구현할 수 있습니다. HTTP 프로토콜과 RESTful API의 개념을 이해하면, 클라이언트-서버 간의 데이터 통신을 효율적으로 설계할 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *