# スタートアップ
最初に、Python 3.7以降が実行されていることを確認します。現在、はPythonバージョン3.7、3.8、および3.9で動作することがわかっています。
# インストール
pip install sanic
# hello, worldアプリケーション
多くのデコレーター・ベースのフレームワークのいずれかを使用したことがある人であれば、このフレームワークはおそらく皆さんにとって馴染みのあるものです。
TIP
もしあなたがFlaskや他のフレームワークから来ているのであれば、いくつかの重要な指摘があります。Sanicはパフォーマンス、柔軟性、使いやすさを目指しています。これらの指針は、APIとその動作に目に見える影響を与えます。
from sanic import Sanic
from sanic.response import text
app = Sanic("MyHelloWorldApp")
@app.get("/")
async def hello_world(request):
return text("Hello, world.")
# 重要なノート
- すべてのリクエストハンドラは、sync(
def hello_world
)またはasync(async def hello_world
)のいずれかになります。明確な理由がない限り、常に`async'を使ってください。 request
オブジェクトは、常にハンドラの最初の引数です。他のフレームワークは、インポートされるコンテキスト変数でこれを渡します。async
の世界では、これはあまりうまく動作しないでしょうし、それについて明示的に説明することは (よりクリーンでよりパフォーマンス的であることは言うまでもありませんが) はるかに簡単です。- 応答タイプを使用する必要があります。他の多くのフレームワークでは、
return"Hello, world。"
またはthis:return {"foo":"bar"}
です。しかし、この暗黙の呼び出しを行うには、チェーン内のどこかで、意味を判断するために貴重な時間を費やす必要があります。この容易さを犠牲にして、Sanicは明示的なコールを要求することにしました。
# 実行
上記のファイルをserver.py
として保存します。そして、それを起動します。
sanic server.app
TIP
この別の重要な違いです。他のフレームワークには、組み込みの開発サーバーが付属しており、開発用であることを明示的に示しています。逆のことは、Sanicにも言える。
パッケージ化されたサーバーは、実稼働に対応しています。
# Sanicエクステンション
Sanicは、意図的にクリーンで偏見のない機能リストを目指しています。プロジェクトは、特定の方法でアプリケーションを構築することを要求したくないし、特定の開発パターンを処方することを避けようとしている。コアリポジトリの要件を満たさない追加機能を追加するために、コミュニティによって構築・維持されているサードパーティプラグインが多数あります。
しかし、API開発者を助けるために、Sanic組織はSanicエクステンション という公式プラグインを維持しており、以下を含むあらゆる種類のグッズを提供しています。
- Redoc および/または Swagger による OpenAPI ドキュメンテーション
- CORS保護
- ルートハンドラへの依存性注入
- リクエストのクエリ引数とボディ入力の検証。
HEAD
、OPTIONS
、TRACE
のエンドポイントを自動作成する。- 定義済み、エンドポイント固有のレスポンスシリアライザー
NEW in v21.12
設定方法としては、Sanicと一緒にインストールするのが望ましいですが、パッケージ単体でインストールすることも可能です。
$ pip install sanic[ext]
$ pip install sanic sanic-ext
v21.12から、Sanicが同じ環境であれば、Sanic Extensionsを自動的にセットアップするようになりました。また、2つの追加アプリケーションプロパティにアクセスできるようになります。
app.extend()
- Sanic Extensionsを設定するために使用されます。app.ext
- アプリケーションにアタッチされているExtend
インスタンスです。
プラグインの使用方法および作業方法の詳細については、プラグイン ドキュメント を参照してください。
← 紹介 Sanic Application →