crab

crab

The 'crabs in a barrel' mentality only exists if we view ourselves as a crab. The truth is on the map.

极简なインターフェース録音ツール-必要なAPIを選択してデータベースに保存します。

极简接口録画ツール#

1 日で、非常にシンプルなインターフェース録画ツールを完成させました。主な機能は次のとおりです:

  1. API リクエストをデータベースに録画することができます。SQLite または PostgreSQL を使用できます。
  2. API の手動録画時には、ブラウザプロキシを手動で設定し、コマンドラインまたは UI の方法でワンクリックで完了します。

録画された API リクエストの主な目的は、API テストコードの生成を容易にすることです。テストと開発の両方で使用できます。必要な API をデータベースに保存し、後で続けて使用できるようにします。

このツールの利点は、非常に低コストであることです。最も必要な機能を実装するのに 1 日しかかかりませんでした。

コマンドラインツールの機能#

  • mitmproxy と独自のプラグインを起動して API リクエストを録画します。
poetry run qacli capture start --name="scenario_name"

start

  • どのウェブサイトのリクエストを録画するかは、configs/settings.toml で設定できます。
mitm = { recorded_url = "https://www.baidu.com,https://www.bing.com" }

上記の例では、すべての baidu と bing のアドレスのリクエストがキャプチャされてデータベースに保存されます。

  • データベースのテーブル構造:
class ApiMonitorRecord(SQLModel, table=True):
    __tablename__ = "api_monitor_record"

    id: Optional[int] = Field(default=None, primary_key=True)
    app: Optional[str] = None
    service: Optional[str] = None
    api: Optional[str] = None
    path: Optional[str] = None
    request_url: Optional[str] = None
    method: Optional[str] = None
    request_headers: Optional[str] = None
    request_body: Optional[str] = None
    response_headers: Optional[str] = None
    status_code: int
    response_body: Optional[str] = None
    scenario_name: Optional[str] = None

  • MAC でプロキシをオン / オフにする:ブラウザでの操作は不要で、コマンドラインで完了します。
 poetry run qacli mac-proxy --help
                                                                                                                                                         
 Usage: qacli mac-proxy [OPTIONS] COMMAND [ARGS]...                                                                                                      
                                                                                                                                                         
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 --help          Show this message and exit.
╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮
 off                  disable api capture proxy
 on                   enable api capture proxy 

UI 機能#

UI を実行するには:

poetry run qaui

qaui

UI の操作:

  • 録画するシナリオ名を入力します。任意の名前を使用できます。
  • 関連するページや API インターフェースを操作します。これらはすべて録画されます。
  • データベースをクエリし、指定したシナリオ名のすべての API リクエストが記録されます。
select * from api_monitor_record where scenario_name=<your_record_name>
  • 保存されたデータを一括で自動化テストやデータ準備ツールに変換できます。

このツールは非常にシンプルでありながら、十分に使いやすく、コード量も少なく、記録され、他のツールと組み合わせることで、日常的な API アクセスコードの生成とデータ準備のニーズを満たすことができます。

Python 関連の使用#

主に以下のものを使用しています:

  1. typer:コマンドラインビルドツール
  2. gradio:UI ビルドツール
  3. データベース操作:以前から使用している SQLModel ベースのアクセスツール
  4. poetry:Python プロジェクトの管理、パッケージング / 依存関係管理
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。