O Apidog permite-lhe executar programas externos (scripts, JARs, binários) a partir do seu ambiente Javascript. Isto permite-lhe tirar partido de código existente em linguagens como Java, Python, PHP, Go, Shell, etc.
Aviso de Segurança
Os programas externos são executados fora da sandbox do Apidog e têm acesso total ao seu sistema. Certifique-se de que confia no código que está a executar.
Abrir o Diretório de Programas Externos: Clique no ícone da pasta no editor de scripts para abrir o diretório onde os seus scripts externos devem ser colocados.
2.
Executar através de Script: Use pm.executeAsync para chamar o programa.
argsstring[] Parâmetros. Ao chamar métodos especificados num pacote jar, será usado JSON.stringify para a conversão. Exceto nesse caso, os tipos não-string serão convertidos implicitamente para string.
optionsObject
commandstring O comando de execução do programa externo; a primeira parte do "prefixo do comando" é o comando de execução. Opcional; o valor predefinido é inferido automaticamente (consulte a tabela de "prefixo do comando" acima); pode ser personalizado para qualquer programa.
cwdstring Diretório de trabalho do subprocesso. Opcional; a predefinição é "Diretório de Programas Externos".
envRecord<string, string> Variáveis de ambiente do subprocesso. Opcional; a predefinição é {}.
windowsEncodingstring Codificação usada no sistema Windows. Opcional; a predefinição é "cp936".
classNamestring Especifique o nome da classe a chamar no pacote jar, por exemplo, "com.apidog.Utils".
methodstring Especifique o nome do método a chamar no pacote jar, por exemplo, "add".
paramTypesstring[] Especifique os tipos de parâmetros do método a chamar no pacote jar, por exemplo, ["int", "int"].
Retorno: Promise<string>
Utilização do parâmetro command
Por predefinição, o Apidog usa python para executar ficheiros .py. Se python3 já estiver instalado no computador, command pode ser especificado como python3.
argsstring[] Parâmetros. Ao chamar métodos especificados num pacote jar, será usado JSON.stringify para a conversão. Exceto nesse caso, os tipos não-string serão convertidos implicitamente para string.
optionsObject
windowsEncodingstring Codificação usada no sistema Windows. Opcional; a predefinição é "cp936".
classNamestring Especifique o nome da classe a chamar no pacote jar, por exemplo, "com.apidog.Utils".
methodstring Especifique o nome do método a chamar no pacote jar, por exemplo, "add".
paramTypesstring[] Especifique os tipos de parâmetros do método a chamar no pacote jar, por exemplo, ["int", "int"].
Ao executar um programa, o comando executado será impresso na consola (apenas para referência). Se o resultado não corresponder às expectativas, pode copiar o comando e colá-lo em Shell/CMD para depurar.A consola também imprimirá a "saída padrão (stdout)" e a "saída de erro padrão (stderr)" do processo executado. O conteúdo de stdout (excluindo o carácter de nova linha final) será o resultado final da execução.
TIP
Por razões históricas, pm.execute trata a execução como falhada quando existe conteúdo em stderr. Isto faz com que alguns programas falhem ao gerar avisos ou mensagens de erro. pm.executeAsync passa a usar o código de saída do processo para determinar se a execução falhou.
Como o programa externo especificado é executado através da linha de comandos, só pode obter os parâmetros transmitidos através de argumentos da linha de comandos.Por exemplo, no script pm.executeAsync('add.js', [2, 3]), o comando efetivamente executado é node add.js 2 3. Para obter os parâmetros no script externo add.js:
TIP
1.
Linguagens de programação diferentes têm formas diferentes de obter argumentos da linha de comandos; consulte a documentação da linguagem correspondente.
2.
O tipo dos argumentos da linha de comandos é sempre string; é necessário converter com base nos tipos reais.
Como mencionado acima, o Apidog usa o conteúdo de stdout como o resultado da execução do programa. Portanto, imprimir conteúdo para stdout pode devolver resultados.Por exemplo, no script const result = await pm.executeAsync('add.js', [2, 3]), o resultado pode ser devolvido por:
1.
Linguagens de programação diferentes têm formas diferentes de imprimir para stdout; consulte a documentação da linguagem correspondente.
2.
O tipo de retorno é string; é necessário converter com base nos tipos reais.
3.
O carácter de nova linha final do resultado será removido.
4.
Ao chamar métodos especificados em pacotes jar, o valor de retorno do método chamado será usado como o valor de retorno final.
Lançar erros pode fazer com que a tarefa atual falhe e interrompa a execução. Por exemplo:
1.
Linguagens de programação diferentes têm formas diferentes de lançar erros; consulte a documentação correspondente.
2.
Em JavaScript, console.error('Error') apenas imprime para stderr, em vez de lançar um erro. Tenha isto em consideração também ao usar outras linguagens.
Como pm.executeAsync usa o código de saída em vez de stderr para determinar o sucesso, stderr pode ser usado para imprimir informações de depuração sem afetar a execução.Por exemplo:
TIP
1.
Apenas pm.executeAsync suporta esta forma de imprimir informações de depuração.
2.
Linguagens de programação diferentes têm formas diferentes de imprimir para stderr; consulte a documentação correspondente.
Como o valor de retorno de pm.executeAsync é do tipo Promise, execute não pode ser alterado diretamente para executeAsync. No entanto, pode usar async/await para migrar com alterações mínimas.
TIP
A versão 2.3.24 ou posterior do Apidog (versão 1.2.38 ou posterior da CLI) suporta await de nível superior.
Esta funcionalidade requer que a versão do Apidog seja 2.1.39 ou posterior. Suporta apenas a chamada de jars com reflection, não jars como Spring Boot que usam reflection interna em tempo de execução.
Por predefinição, chamar um jar invocará o método main na classe Main. Se options.className for especificado, substituirá o comportamento predefinido e chamará, em vez disso, o método especificado no jar.Chamar métodos especificados em jars é diferente de outros programas externos. O Apidog usará um executor incorporado para encontrar o método no jar por reflection e chamá-lo. Se o método chamado tiver um valor de retorno, este será usado como valor de retorno final após a conversão para string. Caso contrário, funciona da mesma forma que outras chamadas, usando o conteúdo de stdout como valor de retorno.Por exemplo:
O comando efetivamente executado é:
Em que <app-dist>/assets/JarExecuter-1.1.0-jar-with-dependencies.jar é o executor incorporado, responsável por encontrar o método com.apidog.Test.combine(String,String) no programa do utilizador ./scripts/jar-1.0-SNAPSHOT.jar através de reflection, e por chamá-lo com os parâmetros (string JSON) "hello" e "world".
TIP
paramTypes é opcional. Se não for especificado, os tipos serão inferidos automaticamente com base nos parâmetros. Os inteiros são inferidos como "int", os floats como "double", os booleanos como "boolean", as strings como "String"; as arrays são inferidas com base no primeiro elemento, por exemplo, [3] é inferido como "int[]", [3.14] como "double[]", etc. Se os tipos inferidos não corresponderem aos tipos de parâmetros reais do método chamado, paramTypes tem de ser especificado manualmente. Valores suportados na array 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[]"Portanto, o paramTypes no exemplo acima pode ser omitido: