# スタートアップ

最初に、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保護
  • ルートハンドラへの依存性注入
  • リクエストのクエリ引数とボディ入力の検証
  • HEADOPTIONSTRACEのエンドポイントを自動作成する。
  • 定義済み、エンドポイント固有のレスポンスシリアライザー

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 インスタンスです。

プラグインの使用方法および作業方法の詳細については、プラグイン ドキュメント を参照してください。

MIT Licensed
Copyright © 2018-present Sanic Community Organization

~ Made with ❤️ and ☕️ ~