ボトル: Python Web フレームワーク

ボトル:Python Webフレームワーク:https://bottlepy.org/docs/dev/

@routeBottleフレームワークにおけるルート処理関数を宣言するためのデコレータ(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 リクエストが行われると、サーバーはリクエストに応じてこのメソッドを呼び出し、メソッドの戻り値を応答本文としてクライアントに送り返します。

上記のコードでは、 URL パス@route('/llm')が指定され、メソッド/llmにバインドされています。ルートがリクエストを受信するllm_js()と、Bottle はこの関数を呼び出し、応答として戻り値を返します。/llm

Bottle、Flask、および FastAPI はすべて Python Web フレームワークであり、それぞれに独自の特徴と利点があります。これら 3 つのフレームワークとそれらの違いと比較を詳しく見てみましょう。

フラスコ

Flask はよく知られた Python Web フレームワークであり、シンプルさ、軽量さ、学習と使用の容易さが特徴で、強力な拡張性と柔軟性も備えています。Flask は、デコレータとコールバック関数を使用してルートの配布と処理を実装するように設計されています。Flask フレームワークにはデフォルトのデータベース、フォーム検証、認証などの機能はありませんが、サードパーティの拡張ライブラリを使用してこれらの機能を実装できます。このフレームワークは、ニーズに応じてライブラリを自由に拡張できますが、強力な制御能力と開発能力も必要であり、柔軟性を追求する開発者に適しています。

ボトル

Bottle は Flask に似た Web フレームワークであり、シンプルなデザインで使いやすい軽量フレームワークです。Bottle フレームワークは外部ライブラリやツールに依存せず、ルーティング、テンプレート エンジン、リクエスト処理、静的ファイル サポートなどの一般的な Web 機能が含まれています。Bottle を使用すると、開発者は単純な Web アプリケーションを迅速に開発できますが、大規模な Web アプリケーションに拡張することもできます。Bottle フレームワークは、Web サービスを提供する小規模プロジェクトまたは開発者に適しています。

ファストAPI

FastAPI は、非同期プログラミング、JSON スキーマ、依存関係注入など、最新の Web 開発技術を使用する比較的新しい Python Web フレームワークです。このフレームワークは、高性能 API を構築するための、高速、高性能、使いやすい Web アプリケーション フレームワークです。FastAPI はインタラクティブな API ドキュメントを自動的に生成でき、Flask や Bottle よりも優れたパフォーマンスとエクスペリエンスを備えています。

一般に、Flask と Bottle はどちらも軽量のフレームワークであり、小規模な Web アプリケーションの構築や Web サービスの提供に適しており、使用も比較的簡単です。一部の大規模な Web アプリケーション シナリオでは、サードパーティの拡張ライブラリを使用して追加機能を実装する必要がありますが、これにより使用が難しくなり、開発コストが増加します。

対照的に、FastAPI は速度と高パフォーマンスに重点を置いているため、特に非同期リクエストや大量の同時リクエストが処理されるシナリオでは、高品質の API とマイクロサービスを構築するのに理想的な選択肢となります。FastAPI の開発方法は Flask や Bottle とまったく同じではなく、API ルートを定義する際にパラメータや戻り値の型などの仕様を指定する必要がありますが、より完全な型チェックとドキュメント生成も提供します。FastAPI の構文は Python の最新の言語機能を使用しているため、学習曲線は少し高いかもしれませんが、言語機能と Web アプリケーションの基本を理解していれば、効率的な API サービスをすぐに開発できます。

さて、Flask、Bottle、FastAPI を比較するための具体的な例をいくつか示します。

フラスコ

例 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>ユーザーの詳細を表示するルート ハンドラーを定義します。

ボトル

例 1: 単純な Hello World

from bottle import route, run

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

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

この例では、ボトル ライブラリを使用してルート処理関数を定義します/。リクエストがこのルートに到着すると、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()フォーム コントロールの値を取得するメソッドを使用することでフォームの処理を実現します。

ファストAPI

例 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