Bottle: Python Web Framework

Bottle: Python Web Framework:https://bottlepy.org/docs/dev/

@route 是 Bottle 框架中用于声明路由处理函数的装饰器(Decorator)。通过使用这个装饰器可以将一个 Python 函数声明为路由处理函数,并将其绑定到指定的路由上。

具体来说,@route 装饰器是指定一个 URL 路径和一个处理函数的关系。如下面的示例:

from bottle import route, run

@route('/hello')
def hello():
    return "Hello World!"

run(host='localhost', port=8080)

在这个例子中,@route('/hello') 指定了 URL 路径为 /hello,并将其绑定到 hello() 方法上。这意味着当使用 /hello 路径发出 GET 请求时,服务器将调用该方法来响应请求,并将该方法的返回值作为响应正文发送回客户端。

在上述代码中,@route('/llm') 指定了 /llm URL 路径,并将其绑定到 llm_js() 方法上。在 /llm 路径收到请求时,Bottle 将调用这个函数并返回其返回值作为响应。

Bottle、Flask 和 FastAPI 都是 Python 的 Web 框架,分别有其特点和优势。下面来详细介绍一下这三个框架以及它们之间的区别和对比。

Flask

Flask 是一个广为人知的 Python Web 框架,它的特点是简单、轻量级,易于学习和使用,同时也具有很强的可扩展性和灵活性。Flask 设计上采用了装饰器和回调函数的方式实现路由分发和处理。Flask 框架没有任何默认的数据库、表单验证、认证等功能,但可以使用第三方扩展库来实现这些功能。该框架适合追求灵活性的开发者,可以根据需求自由选择扩展库,但也需要有较强的掌控能力和开发能力。

Bottle

Bottle 是一个类似于 Flask 的 Web 框架,也是一个轻量级的框架,设计简单,易于上手。Bottle 框架不依赖于任何外部库或工具,包含了路由、模板引擎、请求处理、静态文件支持等常见 Web 功能。Bottle 可以使开发者快速开发出简单的 Web 应用,同时也可以扩展到大型 Web 应用程序。Bottle 框架适合于小型项目或提供 Web 服务的开发者。

FastAPI

FastAPI 是一个相对较新的 Python Web 框架,使用了现代 Web 开发的最新技术,例如异步编程,JSON Schema,依赖注入等。该框架是一个快速、高性能、易于使用的 Web 应用框架,适用于构建高性能的 API。FastAPI 可以自动生成交互式 API 文档,并且拥有比 Flask 和 Bottle 更好的性能和体验。

总体来说,Flask 和 Bottle 都是轻量级的框架,适合构建小型 Web 应用或提供 Web 服务,并且使用起来相对简单。在一些较大型的 Web 应用场景中,我们需要使用第三方扩展库来实现一些额外的功能,这将会增加一定的使用难度和开发成本。

与此相比,FastAPI 的重点在于快速和高性能,这使它成为构建高质量 API 和微服务的理想选择,尤其在处理异步请求和高并发请求的场景下表现更加突出。FastAPI 的开发方式和 Flask 和 Bottle 不完全相同,FastAPI 需要在定义 API 路由时指定参数和返回类型等规范,但同时也提供了更加完善的类型检查和文档生成。由于 FastAPI 的语法使用了 Python 最新的语言特性,学习曲线可能会有点高,但只要了解了语言特性和 Web 应用的基础知识,就可以快速开发高效的 API 服务。

好的,下面举几个具体的例子来对比 Flask、Bottle 和 FastAPI。

Flask

例子1:一个简单的 Hello World

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

这是 Flask 中最经典的例子,定义了一个路由处理函数 /。当请求到达这个路由时,将会返回一个 “Hello, World!” 的字符串。

例子2:一个简单的数据库应用

from flask import Flask, request
from sqlalchemy import create_engine

engine = create_engine('postgresql://localhost/mydatabase')

app = Flask(__name__)

@app.route('/users/<username>')
def user_detail(username):
    with engine.connect() as conn:
        result = conn.execute(f"SELECT * FROM users WHERE username = '{username}'")
        user = result.fetchone()
        return f"{user['name']}, {user['email']}"

这个例子中,我们使用了 Flask 和 SQLAlchemy 库,连接到一个 PostgreSQL 数据库,并定义一个路由处理函数 /users/<username>,用于展示用户的详细信息。

Bottle

例子1:一个简单的 Hello World

from bottle import route, run

@route('/')
def hello():
    return "Hello, World!"

run(host='localhost', port=8080)

这个例子中,我们使用 Bottle 库定义了一个路由处理函数 /,当请求到达这个路由时,会使用 hello() 函数响应请求并返回 “Hello, World!” 的字符串。

例子2:一个简单的表单处理应用

from bottle import route, run, request

@route('/')
def index():
    return '''
        <form method="POST" action="/hello">
            Name: <input name="name" type="text" />
            <input type="submit" />
        </form>
    '''

@route('/hello', method='POST')
def hello():
    name = request.forms.get('name')
    return "Hello, %s!" % name

run(host='localhost', port=8080)

这个例子中,我们使用 Bottle 框架定义了一个表单处理应用,通过使用 request.forms.get() 方法获取表单控件的值,实现了对表单的处理。

FastAPI

例子1:一个简单的 Hello World

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

这是 FastAPI 中的 Hello World 示例。定义了一个异步路由处理函数,并使用 app.get() 装饰器绑定到 / 路径上。

例子2:使用 FastAPI 和 Pydantic 库实现参数验证

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    name: str
    email: str

@app.post("/user/")
async def create_user(user: User):
    return {"user": user, "message": "User created"}

这个例子中,我们使用了 FastAPI 和 Pydantic 库实现了用户参数验证。使用了 Pydantic 库中的 BaseModel 实现了参数的自动解析和验证,并使用了 @app.post() 装饰器和 /user/ 路径将路由处理函数绑定在一起,实现了用户的注册和创建。

猜你喜欢

转载自blog.csdn.net/qq_15821487/article/details/131638844