omi_async_http_client#
omi_async_http_client を github.com でフォークする https://github.com/limccn/omi_async_http_client
説明#
asyncio とバックエンドを使用して実装された非同期の HTTP クライアント
使用法#
- `pip` から omi_async_http_client をインストールする
$pip install omi_async_http_client
またはソースコードからインストールする
$python setup.py install
- 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
- プロジェクトに適用する。
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]
- 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) を参照してください。