クールなプロジェクトを送信:1つの構成ファイルからAPIクライアント


こんにちは、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をインストールします


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 

Source: https://habr.com/ru/post/J339150/


All Articles