参考リンクします。https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001432339008728d0ddbe19ee594980be3f0644a9371894000
説明します。https://blog.csdn.net/qq_38801354/article/details/73008111
Webフレームワークのメリットを書き換え
1)直接書き込むことができます
URL /ブログ/ {ID}の#プロセスパラメータを記述することができます。 @get( '/ブログ/ {ID}') DEF(ID)get_blog: パス #QUERY_STRINGプロセスパラメータを指定することができ、キーワードやキーパラメータ**キロワットパラメータ受信単語:(まだ理解していない) @get( '/ API /コメント') DEFのapi_comments(*、ページ=」)1' 。: パス 関数の戻り値のための#は必ずしもweb.Responseオブジェクトではありません、 STR、バイトや辞書です。 #あなたがテンプレートをレンダリングしたいので、私たちは辞書を返すことができるのであれば: リターン{ 「__template__」:「index.htmlを」、 「データ」:「...」 }
そしてaiohttpの使用を必要としない必要がある場合に、いくつかのステップ
直接aiohttp# インポートASYNCIO aiohttpウェブインポートから :非同期DEF指数(要求) のawaitのasyncio.sleep(0.5) 戻りweb.Response(B体= 'インデックス<のH1> <の/ H1>') #------ --------------------------------------------見 非同期デフこんにちは(リクエスト):#非同期キーワードの追加コルーチンデコレータ のawaitのasyncio.sleep(0.5) 操作要求パラメータの#、取得動作応答 テキスト= '<H1>こんにちは、 %sの</ H1>!' %要求。 match_info [ '名前'] #1 REPONSE構築物体と戻す 戻りweb.Response(= text.encode本体() 'UTF-8') 非同期DEF INIT(ループ): アプリ= web.Application(ループ=ループ) app.router .add_route( 'GET'、 '/'、指数) app.router.add_route( 'GET'、 '/こんにちは/ {名前}」、ハロー) SRV =のawaitのloop.create_server(アプリケーション。make_handler() '127.0.0.1'、8000) プリントを( 'サーバーは、http開始://127.0.0.1:8000 ...') 戻りSRVの ループ= asyncio.get_event_loopを() loop.run_until_complete(INIT(ループ)) loop.run_forever()
そのため、Webフレームワークからいくつかのステップは、エネルギーパッケージ上で定義されたので、あなただけのような関数を記述する必要があります
2)個別のモジュールをテストすることができ、そうでない場合、あなたは要求を実現することができる前にあるブラウザからのリクエストをシミュレートする必要があります
Webフレームワークを書き始めます
最初のステップ:aiohttpを書くための基礎をフレームに
@getと@post
HTTPは、サーバとの相互作用の異なるメソッドを定義し、四つの基本的な方法、すなわち、GET、POST、PUT、DELETEがあります。、ネットワーク上のリソースを記述するために使用されたURLアドレス、およびHTTPでGET、POST、PUT、それはこのリソースの調査に対応して、削除、変更、追加:URLは、私たちが考えることができ、リソース記述子の略4穿刺操作。 推奨: 1 ポストよりも、セキュリティのGET方法ひどく、機密情報を格納するための方法、ポストデータによる提案の提出; 2、データのクエリを実行し、推奨のGet方法;が、データをやってで変更、追加または削除それはポストのようにしてお勧めします。
URLハンドラとして関数マッピング(結合に相当)へ
ステップ2:要請ハンドラを定義します
URLハンドラ書かれたユーザーは必ずしもコルーチンではありませんので、我々は(知らない)URLハンドラをカプセル化するためのRequestHandlerを()を使用します
要請ハンドラ の目的は、URL関数から引数を受け取るために、彼らのニーズを分析することであるリクエストから必要なパラメータを取得し、URL関数を呼び出します。
RequestHandler
定義の作成時には、クラスである __call__() メソッドを、それをすることができ、例えば関数として。
Callメソッドの役割ます。https://www.cnblogs.com/superxuezhazha/p/5793536.html
#クラスのインスタンスは、()呼び出し可能オブジェクトは、特定のメソッド__callの__を実装する必要になることができます。 #私たちは、呼び出し可能なPersonクラスになっている: クラスPerson(オブジェクト): DEF __init __(自己、名前、性別): self.name =名前 self.gender =性別 DEF __(自己、友達を)__call: 「私の名前を印刷します%S ... 'self.nameの%のIS '印刷'私の友達%Sは...友達%IS :#は今直接Personインスタンスに呼び出すことができます (ボブ'' MALE「)#__ init_ >>>人P =' _入ってくるパラメータは、初期化と同様に、そのようなことをやっている >>> P(「ティム」)#、次に起動するために例を使用し ...私の名前はボブです 私の友人はティムです... #ルックP( 「ティム」)あなたが決定することができない、またはpはクラスインスタンスの関数であり、従って、Pythonで、オブジェクト、オブジェクトの機能と機能の差は有意ではないです。