こんにちは、Habrahabr! 私は最近、単一のymlファイルからのみ必要なAPIに対してクライアントラッパー全体を生成し、それをすぐにPythonパッケージインデックス(PyPi)にロードするツールを作成しました。 はい、 pipを使用して任意のプロジェクトに結果をインストールし、使用を開始できます。 詳細はこちら!
例
リクエストライブラリを使用して記述するGame of Thrones APIサーバーの架空のhttpリクエストコードを確認します。
import requests create_jon_snow_user = requests.post( 'https://gameofthrones.com/api/v1/user', params={ 'id': 7, 'name': 'Jon', 'surname': 'Snow', } ) get_jon_snow_user = requests.get( 'https://gameofthrones.com/api/v1/user', params={'id': 7} ) create_jon_snow_castle = requests.post( 'https://gameofthrones.com/api/v1/user/castle', params={ 'id': 7, 'castle': 'Winterfell', } )
そして今、クライアント(開発者)の構築に快適な構文を使用できるようにするコードについて。
from gameofthrones_api import gameofthrones_api_client as got_api_client create_jon_snow_user = got_api_alient.user.create({ 'id': 7, 'name': 'Jon', 'surname': 'Snow' }) get_jon_snow_user = got_api_alient.user.get({'id': 7}) create_jon_snow_castle = got_api_alient.user.castle.create({ 'id': 7, 'castle': 'Winterfell', })
仕組み
acgツール( Githubへのリンク )がこの可能性を開きますが、このためには、次の形式の.acg.ymlという名前のファイルが必要です。
pypi: username: dmytrostriletskyi password: d843rnd3 acg: name: gameofthronesapi version: 0.1.5 api: https://gameofthrones.com/api/v1 services: user: url: /user endpoints: create:post, get:get user.castle: url: /user/castle endpoints: create:post
PyPiのユーザー名とパスワードを指定して、 acgがクライアントをアカウントにダウンロードし、このパッケージをpip経由でインストールできるようにします。acgは、Pythonパッケージインデックス(PyPi)でパッケージをダウンロードするために必要なパラメーターを.pypircファイルに書き込みます。
次に、クライアントを作成しているバックエンドサーバーに移動します。
- .acg.ymlでは 、 apiフィールドを使用できます。このフィールドでは、ルート(アドレス)を指定する必要があり、そこからさまざまな要求へのブランチが既に移動します。 たとえば、ルートはmyapi.com APIであり、ブランチは/ users / allです。
- servicesでは、好みに応じて、必要な数の「パス」を指定できます。それらはすべてエンドポイントで終わり、「所属」するアドレスを持ちます。
- 構成内のacgの エンドポイントは、メソッドの名前とHTTP要求のタイプです。 上記の構成の例: user.castle.create 、ポストリクエスト、アドレス/ user / castle 単一のパスが多くの要求タイプ(単一アドレスの取得、投稿、削除)をサポートする場合、 エンドポイントを使用すると便利です。 たとえば、 apple.iphone.ten.accountは、アドレス/ apple / iphone / ten / accountへのエンドポイント get(要求タイプget)、削除(delete)、作成(post)、変更(put)をサポートできます。
- 同じアドレスへの多くのエンドポイントは、コンマで区切られたエンドポイント項目への単一行に書き込まれます-get:get、delete:delete、create:post、modify:put(例)。
acgをインストールします
pipを使用してacgをインストールできます。
$ pip install acg
Pip3:
$ pip3 install acg
または、ソースコードをコンパイルします。
$ python setup.py install
Acgチーム
.acg.ymlを作成し、そこで設定を入力し、構成ディレクトリでターミナルを開きました。
$ acg
それに応じて構成とクライアントを更新する場合も、 acgを引き続き使用します。 新しいダウンロードごとに、クライアントパッケージのバージョンを変更する必要があることに注意してください。 パッケージの新しいバージョンをインストールするときは、 -no-cache-dirまたは-Uフラグを忘れずに使用してください。
競合を避けるために、プロジェクトで生成されたすべてのプロジェクト(フォルダー)を削除することをお勧めします( acgがプロジェクトを再ビルドするたびに)。
クライアントをインストールして使用する方法
インストールには、おなじみの `pip install {name}`コマンドが必要です。この場合、パッケージ名は設定ファイルの値の名前になります。
また、簡単に使用でき、インストールされているモジュールから必要なすべてのパラメーターを持つオブジェクトをインポートします。 クライアントは常にパッケージの名前を繰り返しますが、 _client部分でそれ自体を補完します。
たとえば、 telegrambotapiプロジェクトの構成を作成しました。
次に、次のようなPythonコードでクライアントを使用します。
from telegrambotapi import telegrambotapi_client