banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

omi_async_http_client

omi_async_http_client#

omi_async_http_client を github.com でフォークする https://github.com/limccn/omi_async_http_client

説明#

asyncio とバックエンドを使用して実装された非同期の HTTP クライアント

使用法#

  1. `pip` から omi_async_http_client をインストールする

$pip install omi_async_http_client

またはソースコードからインストールする

$python setup.py install

  1. omi_async_http_client のバックエンドをインストールする。同期および非同期の両方がサポートされています。

非同期バックエンドを使用する場合、例:[aiohttp](https://github.com/aio-libs/aiohttp) または \[httpx\](https://github.com/encode/httpx/)

$pip install aiohttp

$pip install httpx

または従来の同期バックエンドを使用する場合、[requests](https://github.com/psf/requests)

$pip install requests

  1. プロジェクトに適用する。

omi_async_http_client.APIClient から TEMPLATE APIClient ビルダー関数を設定し、TEMPLATE APIClient を使用する際に http リクエストのバックエンドパラメータを自動的に補完します。

from omi_async_http_client import APIClient as APIClientBuilder
from app.config import settings

def my_api_client_builder(model):
return APIClientBuilder(
model=model, # None is OK
http_backend="omi_async_http_client.AioHttpClientBackend", # バックエンドとして aiohttp を選択
resource_endpoint=settings.get("API_ENDPOINT_URL", ""),
client_id=settings.get("API_ENDPOINT_CLIENT_ID", ""),
client_secret=settings.get("API_ENDPOINT_CLIENT_SECRET", "")
)
MyAPIClient = my_api_client_builder

リクエスト用のユーザーモデルを定義し、API を定義するために `@RequestModel` デコレータを使用します。同じ効果を持つ `@api_request_model` エイリアスを使用することもできます。

from pydantic import BaseModel
from typing import List
from omi_async_http_client import RequestModel

@RequestModel(api_name="/staff/{id}", api_prefix="", api_suffix="")
class Staff(BaseModel):
id
name = ""
age = 0
gender = "F"

class PagedStaff(BaseModel):
page
offset
limit
staffs[Staff]

  1. HTTP クライアントが正常に動作するかテストし、omi_async_http_client をお楽しみください。

client = APIClient (Staff) # Staff を使用して Apiclient を作成する

Restful API からいくつかのデータを取得するために#

response = await client.retrieve(
condition={ # ページングのための extra_params
'id':123, # {id} プレースホルダを 123 に変更し、/staff/{id} を /staff/123 に変更します。
'name': 'python'
},
extra_params={ # ページングのための extra_params
'page': 1,
'offset': 1,
'limit': 10
},
paging_model=PagedStaff
)

5. このライブラリの使用方法を示すために、[FastAPI](https://github.com/tiangolo/fastapi) を使用したデモ API プロバイダを実装し、テストも含まれています。

詳細については、[mock_fastapi.py](https://github.com/limccn/omi_async_http_client/blob/master/mock_fastapi.py) を参照してください。

読み込み中...
ページは、創作者によって署名され、ブロックチェーンに安全に保存されています。