APPログインインターフェースシミュレーション要求を実装するためのPostmanデータ暗号化と復号化

APPログインインターフェースシミュレーション要求を実装するためのPostmanデータ暗号化と復号化

主に使用されるPostmanの機能

  • 環境変数: 新しい環境変数を作成するだけで、すべての操作がコード内で処理されます。
  • ログビュー: メニューの場所: 表示 → Postman コンソールを表示、このウィンドウビューを表示するだけです
  • リクエスト中に実行されるスクリプト: リクエスト前のスクリプト タグ。言語は JavaScript で、通常は暗号化として使用されます。
  • 返されるときに実行されるスクリプトを受け入れます: テスト タブ、戻りパラメータの処理として、通常は復号化。

シンプルなインターフェース

データの暗号化と復号化

インターフェースでは、パラメータ データを暗号化し、JSON 形式で送信する必要があります。

さまざまなパラメータ設定

  • プレーンテキストパラメータを入力します:

ここでのパラメータは、後でスクリプトによって使用される基本データであり、APP ログイン インターフェイスに入力する必要があるデータに似ている場合もあります。

インターフェースパラメータ

  • リクエスト ヘッダー パラメータを入力します。

ここでのリクエスト ヘッダー データは、システム インターフェイスによって合意されたいくつかの確立されたルール パラメーターです。

リクエストヘッダーパラメータ

実際に送信されたデータ:

はい、パラメータは1つだけです。スクリプトがパラメータを処理して暗号化すると、長い文字列になります╮(╯_╰)╭

ボディデータ。

プロリクエストスクリプト

スクリプトを処理するには、コードを見るだけです。

次のような、スクリプトのよく使用されるカプセル化クラスは、Postman によってカプセル化されます。

  • 環境変数: pm.environment
  • データ暗号化ツールキット: CryptoJS
  • 数学関数ツールキット: 数学

[コード記述ボックスの横には、Postmanが提供する一般的な操作コード生成があり、非常に便利です]

特定のコード:

// 他のリクエストの環境変数パラメータを設定します pm.environment.set("lkm-sys-id",pm.request.headers.get("lkm-sys-id"));
pm.environment.set("lkm-app-id",pm.request.headers.get("lkm-app-id"));
pm.environment.set("lkm-organ-id",pm.request.headers.get("lkm-organ-id"));
pm.environment.set("lkm-app-ver",pm.request.headers.get("lkm-app-ver"));

// データ署名のJSONパラメータ const paramsString = request.url.split('?')[1]; 
各ParamArrayをparamsString.split('&'); 
パラメータを {} とします。 
各ParamArray.forEach((param) => { 
    定数キー = param.split('=')[0]; 
    定数値 = param.split('=')[1]; 
    Object.assign(params, {[キー]: 値}); 
}); 
console.log(パラメータ);

//データ処理 var requestParams = params;
console.log(リクエストパラメータ);

// インターフェイスによって定義されたデータ署名処理 var timestamp = Math.round(new Date());
pm.environment.set("タイムスタンプ",タイムスタンプ);
var shuijishu = "XO337hNxWyNsOlDw";
pm.environment.set("shuijishu",shuijishu);
// システムインターフェースによって合意されたデータ署名 var lkmSign = pm.request.headers.get("lkm-sys-id")
                + pm.request.headers.get("lkm-app-id")
                +「1122334455667788」
                + タイムスタンプ
                + 拾遺集
                + ""
                ;
pm.environment.set("lkmSign",CryptoJS.MD5(lkmSign).toString().toUpperCase());
// =================== データ署名処理が終了します=====================================

// ====================== 暗号化および復号化データ==============================================
/// aesdata 処理 var aesData = dealWithAesData(requestParams);
pm.environment.set("data", aesData); // これは上記のスクリーンショットで送信する必要のあるデータです。/// ↓↓↓↓↓↓↓↓↓↓↓↓↓↓ よく使用される AES 暗号化および復号化方式↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ ///
// aesData データ処理 (コンテンツ辞書)
関数dealWithAesData(コンテンツ) {
    console.log('aesData プレーンテキスト: ' + JSON.stringify(content));
    const キー = CryptoJS.enc.Utf8.parse("****************");
    const iv = CryptoJS.enc.Utf8.parse("0000000000000000");
    const 暗号化 = CryptoJS.AES.encrypt(JSON.stringify(content), key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.Pkcs7 }); //CBC
    暗号化された.toString() を返します。
}

レスポンス処理スクリプト [テスト]

  • 応答データは、復号化して表示されます。
  • 注: Postman は、テスト結果を適切に表示できるさまざまなアサーション操作を提供します。

特定のコード:

// データ処理を返す var jsonData = JSON.parse(responseBody);
var responseData = JSON.parse(decryptResponseData(jsonData.data)); // データの復号化 let success = responseData['success'];
var responseResult = responseData["データ"];

//後続のインターフェースで使用されるデータトークンレコード try {
    token = responseResult["token"]とします。
    pm.environment.set("token", "Bearer "+token);
    console.log("トークン: " + トークン);
} キャッチ (エラー) {
    tests['応答データが有効なトークンであることを期待します'] = false;
    tests[`レスポンスデータ: ${responseResult}`] = true;
    コンソールエラー(err);
}

//データログ出力 console.log("jsonData: 次のオブジェクトは応答データです")
コンソールにログ出力します。
console.log("responseData: 次のオブジェクトは解析されたデータの最初のレイヤーです")
console.log(応答データ);
console.log("responseResult: 次のオブジェクトは解析されたデータの第 2 層です")
console.log(応答結果);

// ログイン後に他のインターフェースで使用される環境変数設定。
console.log(応答結果.エージェントID);
pm.environment.set("エージェントID",responseResult.エージェントID);
pm.environment.set("エージェントコード",responseResult.エージェントコード);
pm.environment.set("エージェント名",responseResult.エージェント名);
// pm.environment.set("token",responseResult.token);

// アサーションを設定します。Postman は優れた一般的なアサーション生成機能を提供しており、次を試すことができます。tests["Business return code=200, success!"] = responseData.code === 200;

/// 返されたデータを復号化する function decryptResponseData(content) {
    const キー = CryptoJS.enc.Utf8.parse("*****************");
    const iv = CryptoJS.enc.Utf8.parse("0000000000000000");
    const decrypt = CryptoJS.AES.decrypt(コンテンツ、キー、{iv: iv、モード: CryptoJS.mode.CBC、パディング: CryptoJS.pad.Pkcs7 });
    const decryptedStr = decrypt.toString(CryptoJS.enc.Utf8);
    decryptedStr.toString() を返します。
}

結果は次のようになります

最終データ

暗号化されたインターフェースをシミュレートするためのリクエストは、ほぼこのようなものです。他の操作については、後で学習する必要があります。PostmanログインAPPインターフェースリクエストの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。

以下もご興味があるかもしれません:
  • PostmanでPOSTをリクエストするときにパラメータリストを設定する方法
  • POSTMANを使用してJSON形式でPOSTリクエストを送信する例
  • Postman のインストールと使用 (Get および Post リクエストのシミュレーション)
  • Postmanはトークンを使用してリクエストメソッドの送信をシミュレートします
  • Postman テストの投稿リクエストパラメータは JSON 型の例の説明です
  • Json データを送信する PostMan のポスト リクエスト メソッド
  • Postmanは、POSTリクエストの4つのリクエストボディをシミュレートします。

<<:  Nginx Webサーバーのサンプルコードの設定方法の詳細な説明

>>:  CentOS8 デプロイメント LNMP 環境で mysql8.0.29 をコンパイルしてインストールする方法の詳細なチュートリアル

推薦する

mysql5.7.20 のインストールと設定方法のグラフィック チュートリアル (mac)

MySQL 5.7.20のインストールと設定方法のグラフィックチュートリアルをあなたと共有します1...

Vue 開発プロジェクトで Font Awesome 5 を使用する方法

目次依存関係をインストールする構成使用1.アイコン検索ページに入る2. 使用したいアイコンの英語名を...

MySQLインストール後のデフォルトデータベースの役割の詳細な説明

MySQL を学習すると、インストール後にいくつかのデフォルトのデータベースが付属していることに気付...

ウェブページ作成によく使われる英語フォント

アリアルArial は、多くの Microsoft アプリケーションとともに配布されるサンセリフ T...

Reactはラジオコンポーネントのサンプルコードを実装します

この記事の目的は、最も明確な構造を使用していくつかのコンポーネントの基本機能を実装することです。皆さ...

Ubuntu 20.04 に MySql5.7 をインストールして構成するための詳細なチュートリアル

目次1. Ubuntuソースの変更2. MySQLをインストールする3. 新しいユーザーを作成し、権...

JSはビデオの再生速度を制御するための簡単なサンプルコードを実装します

導入以前、ある問題に気づきました。学習ビデオを視聴しているとき、動きが遅すぎる、先生が黒板に書くのに...

Webデザイン: タイトルが完全に表示できない場合

<br />今日、新しくなった ChinaUI.com の Web サイトを見たのですが...

CSS3 引用のソースと出典をマークする方法

疫病のせいで家にこもりきりで、頭がおかしくなりそうなので、パソコンを起動して頭を働かせてみました。今...

MySQLデータベースのトランザクションとインデックスの詳細な説明

目次1. 事務:取引の 4 つの主な特徴:同時トランザクションはどのような問題を引き起こしますか? ...

UTF8 でエンコードされた Web ページにファイルが含まれている場合の、ページの前の空白行の解決方法

<br />このページはUTF8エンコードを使用しており、ヘッダーとフッターはテンプレー...

ReactとReduxの配列処理の説明

この記事では、reduce()、filter()、map()、every()、some()、spre...

React useMemo と useCallback の使用シナリオ

目次メモを使うコールバックの使用メモを使う親コンポーネントが再レンダリングされると、そのすべての要素...

ウェブのさまざまなフロントエンド印刷方法: CSS はウェブページの印刷スタイルを制御します

CSS は Web ページの印刷スタイルを制御します。 CSS を使用して印刷スタイルを制御します。...

JVMシリーズのメモリモデルの詳細な説明

目次1. メモリモデルとランタイムデータ領域2. マインドマップと凡例3. オブジェクトはJVMから...