擴充套件後端
ddClient.extension.vm
物件可用於與擴充套件元資料 vm 部分中定義的後端進行通訊。
獲取 (get)
▸ get(url
): Promise
<未知
>
對後端服務執行 HTTP GET 請求。
ddClient.extension.vm.service
.get("/some/service")
.then((value: any) => console.log(value)
有關 POST、UPDATE 和 DELETE 等其他方法,請參閱 服務 API 參考。
已棄用的擴充套件後端通訊
以下使用
window.ddClient.backend
的方法已棄用,並將在未來版本中移除。請使用上面指定的方法。
window.ddClient.backend
物件可用於與擴充套件元資料 vm 部分中定義的後端進行通訊。客戶端已連線到後端。
示例用法
window.ddClient.backend
.get("/some/service")
.then((value: any) => console.log(value));
window.ddClient.backend
.post("/some/service", { ... })
.then((value: any) => console.log(value));
window.ddClient.backend
.put("/some/service", { ... })
.then((value: any) => console.log(value));
window.ddClient.backend
.patch("/some/service", { ... })
.then((value: any) => console.log(value));
window.ddClient.backend
.delete("/some/service")
.then((value: any) => console.log(value));
window.ddClient.backend
.head("/some/service")
.then((value: any) => console.log(value));
window.ddClient.backend
.request({ url: "/url", method: "GET", headers: { 'header-key': 'header-value' }, data: { ... }})
.then((value: any) => console.log(value));
在擴充套件後端容器中執行命令
例如,在後端容器中執行命令 ls -l
await ddClient.extension.vm.cli.exec("ls", ["-l"]);
流式傳輸在後端容器中執行的命令的輸出。例如,在後端容器中啟動命令 ls -l
await ddClient.extension.vm.cli.exec("ls", ["-l"], {
stream: {
onOutput(data) {
if (data.stdout) {
console.error(data.stdout);
} else {
console.log(data.stderr);
}
},
onError(error) {
console.error(error);
},
onClose(exitCode) {
console.log("onClose with exit code " + exitCode);
},
},
});
有關更多詳細資訊,請參閱 擴充套件 VM API 參考
已棄用的擴充套件後端命令執行
此方法已棄用,並將在未來版本中移除。請使用上面指定的方法。
如果您的擴充套件附帶應在後端容器中執行的其他二進位制檔案,您可以使用 execInVMExtension
函式
const output = await window.ddClient.backend.execInVMExtension(
`cliShippedInTheVm xxx`
);
console.log(output);
在主機上呼叫擴充套件二進位制檔案
您可以執行擴充套件元資料 host 部分中定義的二進位制檔案。
例如,在主機中執行附帶的二進位制檔案 kubectl -h
命令
await ddClient.extension.host.cli.exec("kubectl", ["-h"]);
只要 kubectl
二進位制檔案作為擴充套件的一部分提供,您就可以在主機中啟動 kubectl -h
命令並獲取輸出流
await ddClient.extension.host.cli.exec("kubectl", ["-h"], {
stream: {
onOutput(data: { stdout: string } | { stderr: string }): void {
if (data.stdout) {
console.error(data.stdout);
} else {
console.log(data.stderr);
}
},
onError(error: any): void {
console.error(error);
},
onClose(exitCode: number): void {
console.log("onClose with exit code " + exitCode);
},
},
});
您可以流式傳輸在後端容器或主機中執行的命令的輸出。
有關更多詳細資訊,請參閱 擴充套件主機 API 參考
已棄用的擴充套件二進位制檔案呼叫
此方法已棄用,並將在未來版本中移除。請使用上面指定的方法。
在主機中執行命令
window.ddClient.execHostCmd(`cliShippedOnHost xxx`).then((cmdResult: any) => {
console.log(cmdResult);
});
流式傳輸在後端容器或主機中執行的命令的輸出
window.ddClient.spawnHostCmd(
`cliShippedOnHost`,
[`arg1`, `arg2`],
(data: any, err: any) => {
console.log(data.stdout, data.stderr);
// Once the command exits we get the status code
if (data.code) {
console.log(data.code);
}
}
);
注意您不能使用此方法在單個
exec()
呼叫中串聯命令(例如cmd1 $(cmd2)
或使用管道連線命令)。如果需要,您需要為每個命令呼叫
exec()
並解析結果以將引數傳遞給下一個命令。