Web開発フレームワークというと、私は普段FlaskとDjangoを使っていますが、Flaskは軽量な開発フレームワークで、APIインターフェースを書くのにとても便利なのですが、FastAPIフレームワークは今回紹介するモジュールもPython開発者の間で評判が良いので、始める前にpipコマンドで使用するモジュールをインストールする必要があります。
pip install fastapi
ASGI サーバーは uvicorn を使用できるため、同様です。
pip install uvicorn
HelloWorld
まず、Flask フレームワークを使用して HelloWorld を作成してみます。コードは次のとおりです:
from flask import Flask, request import json app = Flask(__name__) @app.route('/') def hello_world(): return 'hello world' if __name__ == '__main__': app.run(host='0.0.0.0', port=8889)
エディターで使用される開発ツールは Pycharm です。このスクリプトを実行すると、次の結果がポップアップ表示されます。
次に、ブラウザにポップアップ URL を入力してページにアクセスすると、以下のような「hello world」を含むページが表示されます。
コードのロジックから、app = Flask(__name__) は Flask プログラム インスタンスを作成します。ブラウザに URL を入力して Web サーバーにリクエストを送信します。サーバーは URL を Flask プログラム インスタンスに転送するため、URL と Python 関数の間のマッピング関係が保存されるように、URL リクエストごとにコードのどの部分を開始する必要があるかを知る必要があります。上記 2 つの関係を処理するために使用されるプログラム インスタンス app.route デコレータを実現します。最後の app.run() を実行してサービスを開始します。0.0.0.0 はすべてのアドレスをリッスンすることを意味し、指定されたポート番号は 8889 です。それでは、対応する FastAPI バージョンの「HelloWorld」がどのようなものかを見てみましょう。次のように:
from fastapi import FastAPI from fastapi.responses import PlainTextResponse, HTMLResponse, FileResponse import uvicorn app = FastAPI() @app.get("/", response_class=PlainTextResponse) async def hello(): ## async可加可不加,这个随意 return "Hello World!" @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} if __name__ == '__main__': uvicorn.run('fast_api_1:app', host='0.0.0.0', port=8000)
このコードも実行します。FastAPI のデフォルトのリスニング アドレスは 127.0.0.1 で、指定されたポート番号は 8000 なので、http://127.0.0.1:8000/ と入力します。結果は以下のようになります 表示:
文字列が返されるので、response_classにPlainTextResponseを記入し、ブラウザに http://127.0 と入力することもできます。 :8000/items/5?q=somequery、結果は次のようになります:
乱数を返します
私たちは上記の "Hello World" にいます。これに基づいて、乱数を返す操作など、さらにいくつかのケースを書いてみましょう。Flask フレームワークのコードは次のとおりです:
@app.route('/random-number') def random_number(): return str(random.randrange(100))
以下に示すように、ブラウザで結果をテストしてみましょう:
FastAPI フレームワークのコードも非常に似ています。
@app.get('/random-number', response_class=PlainTextResponse) async def random_number(): return str(random.randrange(100))
すべて文字で構成されているかどうかを判定
次に見てみましょう、GETリクエストを送信する際に、URLリクエストパラメータのいずれかが文字で構成されているかどうかを判定します。 Flask フレームワークのコードは次のとおりです:
@app.route('/alpha', methods=['GET']) def alpha(): text = request.args.get('text', '') result = {'text': text, 'is_alpha' : text.isalpha()} return jsonify(result)
以下に示すように、ブラウザで結果をテストしてみましょう:
一方、 FastAPI フレームワーク 対応するコードは次のとおりです:
@app.get('/alpha') async def alpha(text: str): result = {'text': text, 'is_alpha' : text.isalpha()} return result
Create a new user
上記のケースはすべて GET リクエストです。POST リクエストの処理方法を見てみましょう。 POST リクエストを通じて新しいユーザーを作成したい。新しいユーザーの場合、Flask フレームワークのコードは次のとおりです:
@app.route('/create-user', methods=['POST']) def create_user(): id = request.form.get('id', '0001') name = request.form.get('name', 'Anonymous') data = {'id': id, 'name': name} result = {'status_code': '0', 'status_message' : 'Success', 'data': data} return jsonify(result)
以下に示すように、Postman で API の機能を直接テストできます:
POST リクエストを使用するかどうかを「メソッド」で指定する必要がありますが、FastAPI フレームワークでは指定する必要はなく、 app.post() デコレーターを使用するだけです。
@app.post('/create-user') async def create_user(id: str = Form(...), name: str = Form(...)): data = {'id': id, 'name': name} result = {'status_code': '0', 'status_message' : 'Success', 'data': data} return result
静的ページに戻る
静的ページを返す必要がある場合、Flask フレームワークのコードは次のようになります。
@app.route('/get-webpage', methods=['GET']) def get_webpage(): return render_template('flask_1.html', message="Contact Us")
FastAPI フレームワークでは少し面倒ですが、コードは次のとおりです:
app.mount("/static", StaticFiles(directory="static"), name="static") ## 用来加载静态页面 templates = Jinja2Templates(directory="templates") @app.get('/get-webpage', response_class=HTMLResponse) async def get_webpage(request: Request): return templates.TemplateResponse("index.html", {"request": request, "message": "Contact Us"})
静的なページが返されるので、response_class は HTMLResponse
に相当します。概要
上で書いたすべての Flask コードを次のように要約しましょう:
from flask import Flask, request, render_template import random from flask import jsonify import json app = Flask(__name__) @app.route('/') def hello_world(): return 'hello world' @app.route('/random-number') def random_number(): return str(random.randrange(100)) @app.route('/alpha', methods=['GET']) def alpha(): text = request.args.get('text', '') result = {'text': text, 'is_alpha' : text.isalpha()} return jsonify(result) @app.route('/create-user', methods=['POST']) def create_user(): id = request.form.get('id', '0001') name = request.form.get('name', 'Anonymous') data = {'id': id, 'name': name} result = {'status_code': '0', 'status_message' : 'Success', 'data': data} return jsonify(result) @app.route('/get-webpage', methods=['GET']) def get_webpage(): return render_template('flask_1.html', message="Contact Us") if __name__ == '__main__': app.run(host='0.0.0.0', port=8889)
而将所有的FastAPI框架下的代码全部汇总到一起,则如下所示:
from fastapi import FastAPI, Request, Form import uvicorn from fastapi.staticfiles import StaticFiles from fastapi.responses import PlainTextResponse, HTMLResponse, FileResponse import random from fastapi.templating import Jinja2Templates app = FastAPI() app.mount("/templates", StaticFiles(directory="templates"), name="templates") templates = Jinja2Templates(directory="templates") @app.get("/", response_class=PlainTextResponse) async def hello(): return "Hello World!" @app.get("/items/{item_id}") def read_item(item_id: int, q: str = None): return {"item_id": item_id, "q": q} @app.get('/random-number', response_class=PlainTextResponse) async def random_number(): return str(random.randrange(100)) @app.get('/get-webpage', response_class=HTMLResponse) async def get_webpage(request: Request): return templates.TemplateResponse("index.html", {"request": request, "message": "Contact Us"}) if __name__ == '__main__': uvicorn.run('fast_api_1:app', host='0.0.0.0', port=8000)
以上がPython の Web 開発フレームワークを開始する方法を段階的に説明します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

限られた時間でPythonの学習効率を最大化するには、PythonのDateTime、時間、およびスケジュールモジュールを使用できます。 1. DateTimeモジュールは、学習時間を記録および計画するために使用されます。 2。時間モジュールは、勉強と休息の時間を設定するのに役立ちます。 3.スケジュールモジュールは、毎週の学習タスクを自動的に配置します。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

MantisBT
Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。
