欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Postman xmysql不切換環(huán)境緩存數(shù)據到本地

 更新時間:2023年02月10日 14:41:13   作者:River_WJ  
這篇文章主要為大家介紹了Postman xmysql不切換環(huán)境緩存數(shù)據到本地示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

背景

公司內部有個標準產品(對外開發(fā)API接口),該產品迭代過程中會產生很多版本,多環(huán)境。開發(fā)及聯(lián)調過程中,代碼經常要在不同版本,不同環(huán)境中進行切換。

聯(lián)調過程中,需要使用不同環(huán)境配合Postman進行調試。其中大部分傳參需要用到客戶的ID或者企業(yè)的ID。

痛點

常規(guī)獲取ID的的方法:

1. 連接對應的環(huán)境

2. 找到對應的數(shù)據庫

3. 找到對應的表名

4. 輸入sql查詢語句并執(zhí)行,查詢到對應的id

5. 復制id到postman中

假設需要找3個id,則至少需要操作3倍以上的步驟才能完成接口發(fā)起?;谶@種重復性動作比較多,考慮通過其他方法來解決該問題。

1. 想法1--后臺提供接口

后臺開發(fā)接口,提供查詢對應的id接口。

1. 后臺不愿意增加工作量

2. 產品一直在迭代。就算新版本有新增接口,但老版本(部署的老環(huán)境)并不具備新增接口的功能。

從實際情況出發(fā)考慮可行性,走不通。

2. 想法2--nodejs搭服務

利用nodejs啟用服務,編寫服務鏈接,通過postman調用接口,根據傳參,連接不同的環(huán)境數(shù)據庫,返回對應數(shù)據。

1. 用nodejs編寫服務比較簡單(可行)

2. 通過postman去調用接口,需要傳參,意味著需要手動輸入環(huán)境,或者配置不同的環(huán)境。(增加很多配置工作量)

3. node服務需要在調用接口前執(zhí)行。(對于開發(fā)者來說比較簡單,但對于測試組的小伙伴就不友好,增加工作量)

綜合評估之后,想法2可行,但不友好?;灸軡M足開發(fā)的可行性,但對于測試同學來說,可能會有些配置的工作量,并不友好。

3. 想法3--自定義執(zhí)行腳本

通過xmysql庫,執(zhí)行連接命令,可以連接不同的環(huán)境,并返回對應的數(shù)據。

連接方法如下:

// 啟動
xmysql -h host_name -o port -u user_name -p user_password -d database_name

// 通過瀏覽器訪問account表
http://localhost:3000/api/account?_size=100&_p=0

注意:xmysql請求列表數(shù)據時,每次最多返回100條

需求是在每個業(yè)務請求能夠獲取任意客戶id, 想法是把account表數(shù)據全部緩存到本地postman中,在業(yè)務代碼中,通過全局方法,從緩存數(shù)據找到對應的客戶id。(聯(lián)調過程中,基本數(shù)據沒什么大變化,account表只需同步一次),postman全局方法請參考另外一篇文章:《Postman全局注冊方法及對返回數(shù)據可視化處理》, 在postman開啟一個請求業(yè)務,并在pre-request script中編寫同步數(shù)據代碼

/* 獲取個人數(shù)據 */
const personsObj = {}
const getPersonData = (page) => {
    pm.sendRequest(`http://localhost:3000/api/account?_where=(status,eq,2)and(remove_flag,eq,0)&_size=100&_p=${page}`, (err, response) => {
        var data = response.json();
        // 獲取賬戶對應的id
        const psersonAccountMap = data.reduce((total, currentValue) => {
            const _account = currentValue.account.replace('+86-','')
            total[_account] = currentValue
            return total
        }, personsObj)
        if (data.length == 100) {
            getPersonData(++page)
        } else {
            pm.environment.set("psersonAccountMap", psersonAccountMap); // 數(shù)據緩存到環(huán)境變量中
        }
    })
}
getPersonData(0)

在每個業(yè)務中,獲取客戶的id的方法

const utils = eval(globals.loadUtils); // 全局方法引入
// 獲取默認個人ID;不傳參,取默認值,可傳參:utils.getPerson('賬號') 
let personSignerId = utils.getPerson()

啟動xmysql服務雖然簡單,就一條語句xmysql -h host_name -o port -u user_name -p user_password -d database_name, 但每次都輸入上面的執(zhí)行語句, 每次都需要更改參數(shù),也不是辦法;此時想到用批量執(zhí)行bat腳本來替代人工操作。

第一版:滿足基本功能

創(chuàng)建linkDB.bat文件

注意:編碼格式ANSI,否則中文會出現(xiàn)亂碼

代碼如下:

# @set database=database1
# @set database=database2
# @set database=database3
@set database=database4
@set host=xx.xx.xx.xx
@set port=3306
@set user=xxx
@set pwd=xxxxxxx
start cmd /k "xmysql -h %host%  -o %port% -u %user% -p  %pwd% -d %database%"

通過解開注釋,設置不同的環(huán)境。win系統(tǒng)下,直接執(zhí)行bat文件即可鏈接。但每次通過修改注釋也不是很直觀,需要點開文件去編輯,繁瑣的步驟也多。

第二版:參數(shù)預先設置

改進linkDB.bat文件

通過預設環(huán)境參數(shù)、數(shù)據庫表,等信息到代碼中,執(zhí)行腳本后,通過命令行輸入對應的環(huán)境和數(shù)據庫表,最后執(zhí)行xmysql語句連接數(shù)據庫

@echo off  
@set database=''  
@set host=''  
@set port=''  
@set user=''  
@set pwd=''  
Title DataBase  
Color 0A  
:setep1  
echo.  
echo 【第一步:選擇環(huán)境】  
echo 1. 測試環(huán)境  
echo 2. UAT環(huán)境  
echo.  
set /p env=選擇環(huán)境:  
if "%env%"=="1" call :env1  
if "%env%"=="2" call :env2  
:env1  
set host=168.168.168.168
set port=3308  
set user=xxxx  
set pwd=xxxxxxx
goto :setep2  
:env2  
set host=178.178.178.178
set port=8808  
set user=xxxx   
set pwd=xxxxxxx 
goto :setep2  
:setep2  
echo.  
echo 【第二步:選擇數(shù)據庫】  
echo 0. 手動設置數(shù)據庫名  
echo 1. dev-seal  
echo 2. dev-cert  
echo.  
set /p n=選擇數(shù)據庫:  
if "%n%"=="" cls&goto :setep2  
if "%n%"=="0" call :goDB0  
if "%n%"=="1" call :goDB1  
pause   
goto :eof   
:goDB0  
set /p manualDB=輸入數(shù)據庫名:  
set database=%manualDB%  
goto :confirm  
:goDB1  
set database=dev_seal_database1  
goto :confirm  
:confirm  
cls  
echo ═══════════════════════════════════════  
echo 鏈接數(shù)據庫  
echo 目標: %host%:%port%  
echo 數(shù)據庫: %database%  
echo 用戶密碼: %user% %pwd%  
echo ═══════════════════════════════════════  
set /p lastConfirm=是否正確(y/n):  
if "%lastConfirm%"=="y" goto :connect  
if "%lastConfirm%"=="n" cls&goto :setep1  
:connect  
start cmd /k "xmysql -h %host%  -o %port% -u %user% -p  %pwd% -d %database%"  
exit

到這一步的時候,已經實現(xiàn)了win系統(tǒng)下的用戶需求了。但回首一看,測試小姐姐用的是蘋果mac系統(tǒng),辛辛苦苦編寫的bat文件,在mac系統(tǒng)下,直接抓瞎。只能另辟蹊徑

電三版:兼容win/mac系統(tǒng)(最終版)

win/mac一鍵啟動腳本

考慮到mac系統(tǒng)不能兼容bat文件,改用shell執(zhí)行腳本能兼容win/mac系統(tǒng), 前提是win系統(tǒng)需要安裝git bash之類的執(zhí)行環(huán)境?;诠臼褂胓it代碼管理工具,剛好有條件滿足。

代碼擼起來,最終代碼共有3個文件:

linkDB.sh 為最終執(zhí)行腳本

mac.command 蘋果mac系統(tǒng)下的啟動腳本

win.bat 微軟window系統(tǒng)下的啟動腳本

mac.command代碼如下:

#!/bin/bash
cd $(dirname $0)
exec ./linkDB.sh

語法很簡單,就是進入執(zhí)行腳本的文件夾路徑,然后執(zhí)行linkDb.sh文件

win.bat代碼如下:

@echo off
set port=3000
# set /p port="請輸入要關閉的端口,默認3000:"
echo 開始搜索'netstat -ano^|findstr ":%port%" '
for /f "delims=" %%i in ( 'netstat -ano^|findstr :%port%' ) do set pid_line=%%i 
rem set pid=%pid_line:~-6%
if "%pid_line%" == "" (
  echo 沒有找到!
  goto flag_exit
) else (
  echo 已查找到: %pid_line%
  for %%a in (%pid_line%) do (set pid=%%a)
)
echo 占用端口%port%的進程pid:%pid%;現(xiàn)在開始結束它
TASKKILL /PID %pid% /F
:flag_exit
start C:\Program" "Files\Git\git-bash.exe "linkDB.sh"

win系統(tǒng)下代碼相對復雜一點,原因是第一次連接數(shù)據庫,關閉窗口后3000端口可能會一直在占用,進程沒有被結束。所以中間插入了結束3000端口進程的方法,然后啟動git-bash執(zhí)行linkDb.sh文件

linkDb.sh代碼如下:

#!/bin/bash
# 環(huán)境配置,規(guī)則:自定義環(huán)境名,ip,port,用戶,密碼
evnList=(
    '測試環(huán)境,30.31.16.11,3308,user1,password1'
    'UAT環(huán)境,30.31.16.12,3301,user2,password2'
)
# 可配置常用數(shù)據庫名
database1='dev-seal'
database2='dev_cert'
database3='uat_seal'
devDBList=($database1 $database2 $database3)
# 以下為主程序代碼,無須修改
host=''
port=''
user=''
pwd=''
databaseCn=''
database=''
setep3() {
    clear
    echo ═════════════【連接數(shù)據庫】════════════
    echo 目標: $databaseCn 
    echo 地址: $host:$port
    echo 庫名: $database
    echo 用戶: $user
    echo 密碼: $pwd
    echo ═══════════════════════════════════════
    echo
    read -p "正確(y), 錯誤重來(n):" lastConfirm
    if [[ $lastConfirm == 'y' ]]; 
    then
        clear
        echo '開始連接數(shù)據庫...'
        xmysql -h $host -o $port -u $user -p $pwd -d $database
        # exit
    else
        setep1;
    fi
}
setep2() {
    clear
    echo '【第二步:選擇數(shù)據庫】'
    echo ' ' 0. 手動輸入
    for i in "${!devDBList[@]}"
    do
        index=`expr $i + 1`
    	echo ' ' $index. ${devDBList[i]}
    done
    echo
    read -p "選擇數(shù)據庫編號:" targetDB
    if [[ $targetDB -eq 0 ]]; then
        read -p "輸入數(shù)據庫名:" target
        if [[ $target == '' ]]; then
            setep2
        else
            database=$target
        fi
    else 
        database=${devDBList[$targetDB-1]}
    fi
    echo $database
    setep3;
}
setep1(){
    clear
    echo '【第一步:選擇環(huán)境】'
    for i in "${!evnList[@]}"
    do
        string=${evnList[$i]}
        stringList=(${string//,/ })
        envName=${stringList[0]}
        index=`expr $i + 1`
    	echo ' ' $index. ${envName}
    done
    echo 
    read -p "選擇環(huán)境:" env
    if [[ $env == '' ]]; then
        setep1
    fi
    targetEnv=${evnList[$env-1]}
    params=(${targetEnv//,/ })
    databaseCn=${params[0]} # 目標數(shù)據庫名
    host=${params[1]} # 數(shù)據庫ip
    port=${params[2]} # 數(shù)據庫端口
    user=${params[3]} # 用戶
    pwd=${params[4]} # 密碼
    setep2;
};
setep1;

最終版使用須知

============= 必讀 =============

1. 安裝node.js

下載地址: https://nodejs.org/zh-cn/

2. 安裝xmysql

執(zhí)行: npm install -g xmysql

參考地址:https://www.npmjs.com/package/xmysql#xjoin

========== mac 系統(tǒng)必讀 ========== 

1、首次使用,啟動命令行

    1.1、cd 進入當前文件夾
    1.2、執(zhí)行 chmod +x mac.command
    1.3、執(zhí)行 chmod +x linkDB.sh

2、后期使用,一鍵啟動mac.command文件

========== win 系統(tǒng)必讀 ==========

1. 首次使用,需要根據GIT BASH的安裝位置,修改win.bat文件中的路徑

2. 后期使用,一鍵啟動win.bat文件

總結

經過這樣折騰以后,基本滿足傻瓜式啟動方式,減少繁瑣的操作,如有環(huán)境、數(shù)據庫名的變更,只需要在linkDB.sh中進行添加環(huán)境、添加數(shù)據庫名即可,一次編寫,多次使用。

以上就是Postman xmysql不切換環(huán)境緩存數(shù)據到本地的詳細內容,更多關于Postman xmysql本地數(shù)據緩存的資料請關注腳本之家其它相關文章!

相關文章

  • 詳解Node.js amqplib 連接 Rabbit MQ最佳實踐

    詳解Node.js amqplib 連接 Rabbit MQ最佳實踐

    這篇文章主要介紹了詳解Node.js amqplib 連接 Rabbit MQ最佳實踐,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Node.js實現(xiàn)兼容IE789的文件上傳進度條

    Node.js實現(xiàn)兼容IE789的文件上傳進度條

    這篇文章給大家介紹了如何實現(xiàn)兼容IE789的文件上傳進度條,如果你的工作用過上傳圖片或上傳大文件啥的,一般在IE低版本瀏覽器里,會切換到用flash解決,可是有些人肯定不會為了老舊IE的進度條而去學flash,那么下面來一起看看吧。
    2016-09-09
  • node 使用 nodemailer工具發(fā)送驗證碼到郵箱

    node 使用 nodemailer工具發(fā)送驗證碼到郵箱

    最近閑著沒事,我就在練習使用node和mysql編寫接口,計劃寫一個完整的vue系統(tǒng),這篇文章主要介紹了node 使用 nodemailer工具發(fā)送驗證碼到郵箱,需要的朋友可以參考下
    2023-10-10
  • node下使用UglifyJS壓縮合并JS文件的方法

    node下使用UglifyJS壓縮合并JS文件的方法

    下面小編就為大家分享一篇node下使用UglifyJS壓縮合并JS文件的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • NodeJs基本語法和類型

    NodeJs基本語法和類型

    這篇文章主要介紹了NodeJs基本語法和類型的相關資料,需要的朋友可以參考下
    2015-02-02
  • nodejs個人博客開發(fā)第七步?后臺登陸

    nodejs個人博客開發(fā)第七步?后臺登陸

    這篇文章主要為大家詳細介紹了nodejs個人博客開發(fā)的后臺登陸功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • nodejs根據ip數(shù)組在百度地圖中進行定位

    nodejs根據ip數(shù)組在百度地圖中進行定位

    本文主要介紹了nodejs根據ip數(shù)組在百度地圖中進行定位的方法,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • NodeJS 文件夾拷貝以及刪除功能

    NodeJS 文件夾拷貝以及刪除功能

    這篇文章主要介紹了NodeJS 文件夾拷貝以及刪除功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Node.js 使用遞歸實現(xiàn)遍歷文件夾中所有文件

    Node.js 使用遞歸實現(xiàn)遍歷文件夾中所有文件

    這篇文章主要介紹了Node.js使用遞歸實現(xiàn)遍歷文件夾中所有文件,需要的朋友可以參考下
    2017-09-09
  • Express框架搭建項目的實現(xiàn)步驟

    Express框架搭建項目的實現(xiàn)步驟

    Express是一個基于Node.js平臺的輕量級Web應用框架,它提供了簡潔的API和豐富的功能,本文主要介紹了Express框架搭建項目的實現(xiàn)步驟,感興趣的可以了解一下
    2024-06-06

最新評論