파이썬 Bottle 프레임워크란?
Bottle은 파이썬에서 사용되는 경량 마이크로 웹 프레임워크로, 간결하고 빠른 웹 애플리케이션 개발에 중점을 둡니다. 모든 것이 하나의 파일에 들어갈 수 있으며, 외부 종속성 없이 간단한 프로젝트에 적합합니다. 특히, RESTful API, 웹 서비스 또는 소형 웹 애플리케이션을 신속하게 구축할 때 유용합니다.
주요 특징
- 파일 하나에 모든 것: Bottle 애플리케이션은 하나의 파일에 담길 수 있어 간단하고 관리하기 쉽습니다.
- 종속성 없음: Bottle은 자체적으로 동작하며, 추가적인 라이브러리가 필요하지 않습니다.
- 간편한 URL 라우팅: 요청 경로(URL)와 해당 경로에 대한 처리를 쉽게 매핑할 수 있습니다.
- 빠른 템플릿 엔진 내장: 내장된 템플릿 엔진을 사용하여 HTML 페이지를 쉽게 렌더링할 수 있습니다.
- 내장 서버 지원: 기본 HTTP 서버를 내장하고 있어 별도의 웹 서버 설정 없이 바로 실행 가능합니다.
설치 방법
Bottle을 설치하려면 pip
을 사용하여 간단히 설치할 수 있습니다.
pip install bottle
1. 기본 Bottle 예제
Bottle의 가장 간단한 예제는 Hello World
애플리케이션입니다. 이는 웹 브라우저에서 URL을 입력하면 "Hello World"라는 메시지를 반환하는 서버입니다.
from bottle import route, run
# 기본 경로에 대한 처리
@route('/')
def hello():
return "Hello World!"
# 서버 실행
run(host='localhost', port=8080)
설명
@route('/')
: 경로('/')에 대해 요청이 들어오면hello()
함수를 호출하여 응답합니다.run(host='localhost', port=8080)
: 애플리케이션을 로컬에서 실행하고, 브라우저에서http://localhost:8080
으로 접속하면 응답을 확인할 수 있습니다.
2. URL 라우팅 예제
Bottle의 라우팅 시스템을 사용하면 다양한 URL을 처리할 수 있습니다.
from bottle import route, run
# 사용자 이름을 URL 경로로 받아서 출력
@route('/hello/<name>')
def greet(name):
return f"Hello, {name}!"
run(host='localhost', port=8080)
설명
@route('/hello/<name>')
: 경로/hello/
뒤에 사용자가 입력한 이름을 받습니다. 예를 들어,http://localhost:8080/hello/Alice
로 접속하면 "Hello, Alice!"가 출력됩니다.
3. GET 및 POST 요청 처리 예제
Bottle을 사용하여 GET 및 POST 요청을 처리할 수 있습니다. HTML 폼을 통해 POST 요청을 보내고, 서버에서 해당 데이터를 처리하는 예제입니다.
from bottle import route, run, template, request
# GET 요청 시 폼을 보여줌
@route('/login')
def login_form():
return '''
<form action="/login" method="post">
Username: <input name="username" type="text" />
Password: <input name="password" type="password" />
<input value="Login" type="submit" />
</form>
'''
# POST 요청 처리
@route('/login', method='POST')
def login_submit():
username = request.forms.get('username')
password = request.forms.get('password')
if username == "admin" and password == "secret":
return f"Welcome, {username}!"
else:
return "Login failed."
run(host='localhost', port=8080)
설명
/login
경로로 GET 요청이 들어오면 로그인 폼을 보여줍니다.- 폼을 제출하면 POST 요청으로 사용자 이름과 비밀번호가 전송되고, 서버는 이를 처리하여 로그인 결과를 반환합니다.
4. 템플릿 사용 예제
Bottle은 내장된 템플릿 엔진을 사용하여 HTML을 동적으로 생성할 수 있습니다. 다음은 템플릿을 사용하여 사용자 이름을 동적으로 HTML 페이지에 표시하는 예제입니다.
from bottle import route, run, template
# 템플릿을 사용한 응답
@route('/hello/<name>')
def greet(name):
return template('<b>Hello {{name}}</b>!', name=name)
run(host='localhost', port=8080)
설명
template()
함수는 템플릿을 처리하고 동적 HTML을 반환합니다. 템플릿 안에서{{name}}
은 Python에서 전달된 변수name
으로 대체됩니다.
5. 정적 파일 제공 예제
Bottle을 사용하여 정적 파일(이미지, CSS, JavaScript 등)을 제공할 수도 있습니다.
from bottle import route, run, static_file
# 정적 파일을 제공하는 경로 설정
@route('/static/<filename>')
def serve_static(filename):
return static_file(filename, root='./static')
run(host='localhost', port=8080)
설명
static_file()
함수는 지정된 경로에서 파일을 찾아 반환합니다.root='./static'
은 파일을./static
디렉터리에서 찾도록 설정한 것입니다.- 브라우저에서
http://localhost:8080/static/example.png
과 같이 정적 파일을 요청할 수 있습니다.
6. Bottle + JSON API 예제
RESTful API를 만들 때도 Bottle은 매우 유용합니다. 다음은 JSON 데이터를 반환하는 API 예제입니다.
from bottle import route, run, response
import json
# JSON 데이터를 반환하는 경로
@route('/api/data')
def api_data():
response.content_type = 'application/json'
return json.dumps({'name': 'Alice', 'age': 30})
run(host='localhost', port=8080)
설명
/api/data
경로는 JSON 형식으로 데이터를 반환합니다.response.content_type
을application/json
으로 설정하여 클라이언트가 반환되는 데이터를 JSON으로 인식하게 합니다.- 브라우저나 API 클라이언트에서 이 경로에 요청하면 JSON 응답을 받을 수 있습니다.
결론
Bottle은 파이썬에서 간단한 웹 애플리케이션을 구축할 때 적합한 프레임워크로, 설치와 사용이 매우 간단하면서도 필요한 대부분의 기능을 제공합니다. URL 라우팅, GET/POST 요청 처리, 템플릿 시스템, 정적 파일 제공, JSON API 생성 등 다양한 기능을 통해 웹 애플리케이션 개발을 빠르고 간결하게 할 수 있습니다.
더 복잡한 기능이나 확장된 애플리케이션이 필요하면 말씀해 주세요!
'마이크로 웹 프레임워크' 카테고리의 다른 글
[마이크로 웹 프레임워크] Falcon 고성능 웹 프레임워크 1 (4) | 2024.10.19 |
---|---|
[마이크로 웹 프레임워크] FastAPI 마이크로 웹 프레임워크 1 (2) | 2024.10.18 |
[마이크로 웹 프레임워크] 마이크로 웹 프레임워크의 특징 (2) | 2024.10.17 |
[마이크로 웹 프레임워크] 플라스크 소개 및 예제 1 (0) | 2024.10.16 |
[마이크로 웹 프레임워크] 마이크로 웹 프레임 워크 소개 (0) | 2024.10.16 |