Apidog Docs
🇨🇳 繁體中文
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇨🇳 繁體中文
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇨🇳 繁體中文
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
  1. 使用腳本
  • Apidog 學習中心
  • 開始使用
    • Apidog 簡介
    • Apidog 中的基本概念
    • 導覽 Apidog
    • 快速開始
      • 概覽
      • 建立端點
      • 發送請求
      • 新增斷言
      • 建立測試情境
      • 分享 API 文件
      • 探索更多
    • 遷移到 Apidog
      • 概覽
      • 手動匯入
      • 排程匯入(綁定資料來源)
      • 匯入選項
      • 匯出資料
      • 匯入自
        • 從 Postman 匯入
        • 匯入 OpenAPI 規格
        • 匯入 cURL
        • 匯入 Markdown
        • 從 Insomnia 匯入
        • 從 apiDoc 匯入
        • 匯入 .har 檔案
        • 匯入 WSDL
  • Mock API 資料
    • 概述
    • Smart Mock
    • 自訂模擬
    • 模擬優先順序
    • 模擬腳本
    • 雲端模擬
    • 自託管 Runner 模擬
    • 模擬語言(Locales)
  • 帳號與偏好設定
    • 帳戶設定
    • 產生 OpenAPI 存取權杖
    • 通知
    • 語言設定
    • 快捷鍵
    • 網路代理設定
    • 備份資料
    • 更新 Apidog
    • 刪除帳戶
    • 實驗性功能
  • 傳送請求
    • 概覽
    • SSE 偵錯
    • MCP Client
    • Socket.IO
    • WebSocket
    • Webhook
    • SOAP 或 WebService
    • GraphQL
    • gRPC
    • 使用請求代理代理程式進行偵錯
    • 建立請求
      • 請求歷史記錄
      • 請求基礎
      • 參數與主體
      • 請求標頭
      • 請求設定
      • 偵錯請求
      • 將請求儲存為端點
      • HTTP/2
    • 驗證與授權
      • 概覽
      • CA 和用戶端憑證
      • 授權類型
      • Digest Auth
      • OAuth 1.0
      • OAuth 2.0
      • Hawk 驗證
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • 回應和 Cookie
      • 檢視 API 回應
      • 管理 Cookie
      • 概覽
  • 開發和偵錯 API
    • 概觀
    • 產生請求
    • 傳送請求
    • 偵錯案例
    • 測試案例
    • 動態值
    • 驗證回應
    • Design-First 與 Request-First
    • 產生程式碼
    • 環境與變數
      • 概述
      • 使用變數
      • 環境管理
    • Vault 密鑰
      • 概覽
      • HashiCorp Vault
      • Azure Key Vault
      • AWS Secrets Manager
    • 動態值模組
      • Airline
      • 動物
      • 顏色
      • Commerce
      • Company
      • 資料庫
      • Datatype
      • 日期
      • Finance
      • Food
      • Git
      • Hacker
      • Helpers
      • 圖片
      • Internet
      • 位置
      • Lorem
      • 音樂
      • Number
      • Person
      • Phone
      • 科學
      • 字串
      • System
      • Vehicle
      • Word
    • 前置和後置處理器
      • 概覽
      • 斷言
      • 擷取變數
      • Wait
      • 安全性
      • 資料庫操作
        • 概述
        • MySQL
        • MongoDB
        • Redis
        • Oracle Client
      • 使用腳本
        • 概觀
        • 前置處理器指令碼
        • 後置處理器腳本
        • 公開腳本
        • Postman Scripts Reference
        • 呼叫其他程式語言
        • 使用 JS Libraries
        • 視覺化回應
        • 腳本範例
          • 斷言腳本
          • 使用變數
          • 修改請求
          • 其他範例
    • API 偵錯
      • AI Agent Debugger
      • A2A Debugger
  • 設計 API
    • 概覽
    • 建立新的 API 專案
    • 端點基礎
    • APl 設計指南
    • 模組
    • 設定多個請求主體範例
    • 元件
    • 通用欄位
    • 全域參數
    • 端點變更歷史
    • 留言
    • 批次端點管理
    • 自訂協定 API
    • Spec-first 模式 (Beta)
    • 安全方案
      • 概觀
      • 建立安全性方案
      • 使用 Security Scheme
      • 線上文件中的安全性方案
    • 進階功能
      • 自訂端點欄位
      • 關聯的測試場景
      • 端點狀態
      • 參數列表的外觀
      • 端點唯一識別
    • Schemas
      • 概述
      • 建立新 Schema
      • 建立 Schema
      • 從 JSON 等產生 Schema
      • oneOf, allOf, anyOf
      • 使用 Discriminator
  • API 測試
    • 概述
    • 測試情境
      • 建立測試情境
      • 在請求之間傳遞資料
      • 流程控制條件
      • 從端點和端點案例同步資料
      • 從其他專案匯入端點和端點案例
      • 匯出測試情境
    • 測試報告
      • 測試報告
    • 執行測試情境
      • 執行測試場景
      • 批次執行測試場景
      • 資料驅動測試
      • 共享測試資料
      • 排程任務
      • 管理來自其他專案的 API 執行環境
    • 測試套件
      • 概述
      • 建立測試套件
      • 編排測試套件
      • 在本機執行測試套件
      • 透過 CLI 執行測試套件
      • 排程任務
    • 測試 API
      • 整合測試
      • 效能測試
      • 端對端測試
      • 迴歸測試
      • 契約測試
    • Apidog CLI
      • 概覽
      • 安裝並執行 Apidog CLI
      • Apidog CLI 選項
    • CI/CD
      • 概述
      • 與 Github Actions 整合
      • Integrate with Gitlab
      • 與 Jenkins 整合
      • 透過 Git Commit 觸發測試
  • 發布 API 文件
    • 概述
    • 支援的 API 技術
    • 快速分享
    • 檢視 API 文件
    • Markdown 文件
    • 發佈文件網站
    • 自訂登入頁面
    • 自訂版面配置
    • 自訂 CSS、JavaScript、HTML
    • 自訂網域
    • AI Features
    • SEO 設定
    • 進階設定
      • 文件搜尋
      • CORS Proxy
      • 整合 Google Analytics
      • 資料夾樹設定
      • 可見性設定
      • 在文件 URL 中嵌入值
    • API 版本
      • 概述
      • 建立 API 版本
      • 發佈 API 版本
      • 使用 API 版本分享端點
  • 分支
    • 概觀
    • 建立 Sprint 分支
    • 在分支中測試 API
    • 在分支中設計 API
    • 合併 Sprint 分支
    • 管理 Sprint 分支
    • AI Branch (Beta)
  • AI 功能
    • 概觀
    • 啟用 AI 功能
    • 產生測試案例
    • 使用 AI 修改 Schema
    • 端點合規性檢查
    • API 文件完整性檢查
    • AI 驅動的欄位命名
    • 常見問題
  • Apidog MCP 伺服器
    • 概覽
    • 將 Apidog 專案連接至 AI
    • 將已發布的文件連接至 AI
    • 將 OpenAPI 檔案連接到 AI
  • Apidog Europe
    • Apidog Europe
  • 最佳實務
    • 處理 API 簽章
    • 存取受 OAuth 2.0 保護的 API
    • 協作工作流程
    • 管理驗證狀態
  • 離線空間
    • 概述
  • 管理
    • 管理專案
      • 管理專案
      • 通知設定
      • 管理專案成員
      • 專案資源
        • 資料庫連線
        • Git 連線
    • 管理團隊
      • 管理團隊
      • 管理團隊成員
      • 團隊活動
      • 團隊角色與權限
      • 團隊資源
        • General Runner
        • 團隊變數
        • 請求代理代理程式
      • 即時協作
        • 團隊協作
    • 入門檢查清單
      • 基本概念
      • 入門指南
    • 管理組織
      • 管理組織
      • 組織角色與權限
      • 方案管理
        • 組織中的帳單管理員
      • 單一登入 (SSO)
        • SSO 概覽
        • 設定 Microsoft Entra ID
        • 設定 Okta
        • 為組織設定 SSO
        • 管理使用者帳戶
        • 將群組對應到團隊
      • SCIM 佈建
        • SCIM 佈建簡介
        • Microsoft Entra ID
        • Okta
      • 組織資源
        • 自託管 Runner
  • 帳單
    • 概觀
    • 點數
    • 升級您的方案
    • 替代付款方式
    • 管理訂閱
    • 將付費團隊移至組織
  • 附加元件
    • API Hub
    • Apidog Intellij IDEA 外掛
    • 瀏覽器擴充功能
      • Chrome
      • Microsoft Edge
    • 請求代理
      • Web 中的請求代理
      • 共用文件中的請求代理
      • 用戶端中的請求代理
  • 資料與安全
    • 資料儲存與安全性
    • 使用者資料隱私與安全
    • 請求路由與資料安全
  • 參考
    • API 設計優先方法
    • Apidog OpenAPI 規格擴充
    • JSONPath
    • XPath
    • 正規表示式
    • JSON Schema
    • CSV 檔案格式
    • 安裝 Java 環境
    • Runner 部署環境
    • Apidog Markdown 語法
    • Apidog Swagger 擴充
      • 概述
      • x-apidog-folder
      • x-apidog-status
      • x-apidog-name
      • x-apidog-maintainer
    • Apidog JSON Schema 擴充
      • 概述
      • x-apidog-mock
      • x-apidog-orders
      • x-apidog-enum
  • 支援中心
  1. 使用腳本

呼叫其他程式語言

Apidog 允許你從 Javascript 環境執行外部程式(腳本、JAR、二進位檔)。這讓你能夠運用 Java、Python、PHP、Go、Shell 等語言中的既有程式碼。
安全注意事項
外部程式會在 Apidog 沙箱外執行,並且擁有對你系統的完整存取權。請確保你信任正在執行的程式碼。

支援的語言#

Apidog 會根據副檔名推斷執行命令:
語言副檔名命令前綴
Java.jarjava -jar
Python.pypython
Node.js.jsnode
PHP.phpphp
Go.gogo run
Shell.shsh
Ruby.rbruby
Lua.lualua

如何呼叫外部程式#

1.
開啟外部程式目錄:點擊腳本編輯器中的資料夾圖示,以開啟應放置外部腳本的目錄。
外部程式目錄
2.
透過腳本執行:使用 pm.executeAsync 呼叫程式。

API 參考#

pm.executeAsync#

filePath string 外部程式路徑
args string[] 參數。呼叫 jar 套件中的指定方法時,會使用 JSON.stringify 進行轉換。除此之外,非 string 型別會被隱式轉換為 string。
options Object
command string 外部程式的執行命令,「命令前綴」的第一部分就是執行命令。選填,預設值會自動推斷(請參閱上方「命令前綴」表格),也可自訂為任何程式。
cwd string 子程序的工作目錄。選填,預設為「外部程式目錄」。
env Record<string, string> 子程序的環境變數。選填,預設為 {}。
windowsEncoding string Windows 系統上使用的編碼。選填,預設為 "cp936"。
className string 指定要在 jar 套件中呼叫的類別名稱,例如 "com.apidog.Utils"。
method string 指定要在 jar 套件中呼叫的方法名稱,例如 "add"。
paramTypes string[] 指定要在 jar 套件中呼叫的方法參數型別,例如 ["int", "int"]。
回傳:Promise<string>
command 參數的用法
預設情況下,Apidog 會使用 python 執行 .py 檔案。如果電腦上已安裝 python3,可以將 command 指定為 python3。

pm.execute#

建議改用 pm.executeAsync。
pm.execute(filePath, args, options)
filePath string 外部程式路徑
args string[] 參數。呼叫 jar 套件中的指定方法時,會使用 JSON.stringify 進行轉換。除此之外,非 string 型別會被隱式轉換為 string。
options Object
windowsEncoding string Windows 系統上使用的編碼。選填,預設為 "cp936"。
className string 指定要在 jar 套件中呼叫的類別名稱,例如 "com.apidog.Utils"。
method string 指定要在 jar 套件中呼叫的方法名稱,例如 "add"。
paramTypes string[] 指定要在 jar 套件中呼叫的方法參數型別,例如 ["int", "int"]。
回傳:string

執行與日誌#

執行程式時,已執行的命令會列印在主控台中(僅供參考)。如果結果不符合預期,你可以複製該命令並貼到 Shell/CMD 中進行偵錯。
主控台也會列印已執行程序的「標準輸出(stdout)」和「標準錯誤輸出(stderr)」。stdout 內容(不包含結尾換行字元)將會作為執行的最終結果。
TIP
基於歷史原因,當 stderr 中有內容時,pm.execute 會將執行視為失敗。這會導致某些程式在輸出警告或錯誤訊息時失敗。pm.executeAsync 改為使用程序的 exit code 來判斷執行是否失敗。

外部程式的輸入與輸出#

參數#

由於指定的外部程式是透過命令列執行,因此它只能透過命令列引數取得傳入的參數。
例如,在腳本 pm.executeAsync('add.js', [2, 3]) 中,實際執行的命令是 node add.js 2 3。若要在外部腳本 add.js 中取得參數:
TIP
1.
不同程式語言取得命令列引數的方式不同,請參閱對應語言的文件。
2.
命令列引數的型別一律為 string,需要依據實際型別進行轉換。

回傳值#

如上所述,Apidog 會使用 stdout 內容作為程式執行結果。因此,將內容列印到 stdout 即可回傳結果。
例如,在腳本 const result = await pm.executeAsync('add.js', [2, 3]) 中,可以透過以下方式回傳結果:
1.
不同程式語言列印到 stdout 的方式不同,請參閱對應語言的文件。
2.
回傳型別為 string,需要依據實際型別進行轉換。
3.
結果結尾的換行字元會被移除。
4.
呼叫 jar 套件中的指定方法時,被呼叫方法的回傳值會作為最終回傳值。

拋出錯誤#

拋出錯誤可以讓目前任務失敗並停止執行。例如:
1.
不同程式語言拋出錯誤的方式不同,請參閱對應文件。
2.
在 JavaScript 中,console.error('Error') 只會列印到 stderr,而不是拋出錯誤。使用其他語言時也請注意這一點。

偵錯資訊#

由於 pm.executeAsync 使用 exit code 而不是 stderr 來判斷成功與否,因此 stderr 可用來列印偵錯資訊,且不會影響執行。
例如:
TIP
1.
只有 pm.executeAsync 支援這種列印偵錯資訊的方式。
2.
不同程式語言列印到 stderr 的方式不同,請參閱對應文件。

從 pm.execute 遷移到 pm.executeAsync#

由於 pm.executeAsync 的回傳值是 Promise 型別,無法直接將 execute 改成 executeAsync。但你可以使用 async/await 以最少變更進行遷移。
TIP
Apidog 版本 2.3.24 或更新版本(CLI 版本 1.2.38 或更新版本)支援 top-level await。
步驟:
1.
將 execute 改為 executeAsync
2.
在函式呼叫前加入 await

呼叫 .jar 套件中的指定方法#

TIP
此功能要求 Apidog 版本為 2.1.39 或更新版本。它僅支援透過反射呼叫 jar,不支援像 Spring Boot 這類使用內部執行階段反射的 jar。
預設情況下,呼叫 jar 會執行 Main 類別中的 main 方法。如果指定了 options.className,它會覆寫預設行為,改為呼叫 jar 中的指定方法。
呼叫 jar 中的指定方法與其他外部程式不同。Apidog 會使用內建執行器,透過反射在 jar 中尋找方法並呼叫它。如果被呼叫的方法有回傳值,轉換為字串後會作為最終回傳值。否則,其行為與其他呼叫相同,使用 stdout 內容作為回傳值。
例如:
實際執行的命令是:
其中 <app-dist>/assets/JarExecuter-1.1.0-jar-with-dependencies.jar 是內建執行器,負責透過反射在使用者程式 ./scripts/jar-1.0-SNAPSHOT.jar 中尋找方法 com.apidog.Test.combine(String,String),並使用參數(JSON 字串)"hello" 和 "world" 呼叫它。
TIP
paramTypes 為選填。如果未指定,型別會根據參數自動推斷。整數會推斷為 "int",浮點數推斷為 "double",布林值推斷為 "boolean",字串推斷為 "String",陣列則會根據第一個元素推斷,例如 [3] 會推斷為 "int[]",[3.14] 會推斷為 "double[]",依此類推。
如果推斷的型別與被呼叫方法的實際參數型別不符,則需要手動指定 paramTypes。
paramTypes 陣列中支援的值:"Number"、"int"、"Integer"、"long"、"Long"、"short"、"Short"、"float"、"Float"、"double"、"Double"、"boolean"、"Boolean"、"String"、"Number[]"、"int[]"、"Integer[]"、"long[]"、"Long[]"、"short[]"、"Short[]"、"float[]"、"Float[]"、"double[]"、"Double[]"、"boolean[]"、"Boolean[]"、"String[]"
因此,上方範例中的 paramTypes 可以省略:

範例#

1. PHP 程式#

腳本:
test.php:

2. Jar 程式#

腳本:
com.apidog.utils.jar:

常見問題#

1. 某些程式需要專案設定檔,若缺少則會發生錯誤#

Rust 和 Go:
Rust:
could not find `Cargo.toml` in `<...>/ExternalPrograms` or any parent directory
Go:
go.mod file not found in current directory or any parent directory; see 'go help modules'
解決方案:使用 pm.executeAsync 並指定 cwd。

2. MacOS 內建 Python 3,但沒有 Python 2#

使用 pm.executeAsync 並將 command 設為 "python3"。

3. 找不到 Command xxx#

安裝對應程式,並將必要目錄加入系統 PATH。Java 安裝請參閱 docs。

4. 在某些 Windows 系統上呼叫外部腳本時列印出亂碼#

將 windowsEncoding 設為 'utf-8'
Modified at 2026-06-11 10:26:02
Previous
Postman Scripts Reference
Next
使用 JS Libraries
Built with