Apidog le permite ejecutar programas externos (scripts, JAR, binarios) desde su entorno Javascript. Esto le permite aprovechar código existente en lenguajes como Java, Python, PHP, Go, Shell, etc.
Aviso de seguridad
Los programas externos se ejecutan fuera del sandbox de Apidog y tienen acceso completo a su sistema. Asegúrese de confiar en el código que está ejecutando.
Abra el directorio de programas externos: Haga clic en el icono de carpeta en el editor de scripts para abrir el directorio donde deben colocarse sus scripts externos.
2.
Ejecute mediante script: Use pm.executeAsync para llamar al programa.
argsstring[] Parámetros. Al llamar a métodos especificados en un paquete jar, se usará JSON.stringify para la conversión. Excepto en ese caso, los tipos que no sean string se convertirán implícitamente a string.
optionsObject
commandstring El comando de ejecución del programa externo; la primera parte de "prefijo de comando" es el comando de ejecución. Opcional; el valor predeterminado se infiere automáticamente (consulte la tabla de "prefijo de comando" anterior); puede personalizarse con cualquier programa.
cwdstring Directorio de trabajo del subproceso. Opcional; el valor predeterminado es "Directorio de programas externos".
envRecord<string, string> Variables de entorno del subproceso. Opcional; el valor predeterminado es {}.
windowsEncodingstring Codificación usada en el sistema Windows. Opcional; el valor predeterminado es "cp936".
classNamestring Especifique el nombre de la clase que se llamará en el paquete jar, por ejemplo, "com.apidog.Utils".
methodstring Especifique el nombre del método que se llamará en el paquete jar, por ejemplo, "add".
paramTypesstring[] Especifique los tipos de parámetros del método que se llamará en el paquete jar, por ejemplo, ["int", "int"].
Retorno: Promise<string>
Uso del parámetro command
De forma predeterminada, Apidog usa python para ejecutar archivos .py. Si python3 ya está instalado en el equipo, command puede especificarse como python3.
argsstring[] Parámetros. Al llamar a métodos especificados en un paquete jar, se usará JSON.stringify para la conversión. Excepto en ese caso, los tipos que no sean string se convertirán implícitamente a string.
optionsObject
windowsEncodingstring Codificación usada en el sistema Windows. Opcional; el valor predeterminado es "cp936".
classNamestring Especifique el nombre de la clase que se llamará en el paquete jar, por ejemplo, "com.apidog.Utils".
methodstring Especifique el nombre del método que se llamará en el paquete jar, por ejemplo, "add".
paramTypesstring[] Especifique los tipos de parámetros del método que se llamará en el paquete jar, por ejemplo, ["int", "int"].
Al ejecutar un programa, el comando ejecutado se imprimirá en la consola (solo como referencia). Si el resultado no cumple las expectativas, puede copiar el comando y pegarlo en Shell/CMD para depurar.La consola también imprimirá la "salida estándar (stdout)" y la "salida de error estándar (stderr)" del proceso ejecutado. El contenido de stdout (excluido el carácter de nueva línea final) será el resultado final de la ejecución.
TIP
Por razones históricas, pm.execute trata la ejecución como fallida cuando hay contenido en stderr. Esto hace que algunos programas fallen al generar advertencias o mensajes de error. pm.executeAsync cambia para usar el código de salida del proceso a fin de determinar si la ejecución falló.
Dado que el programa externo especificado se ejecuta mediante línea de comandos, solo puede obtener los parámetros pasados mediante argumentos de línea de comandos.Por ejemplo, en el script pm.executeAsync('add.js', [2, 3]), el comando ejecutado real es node add.js 2 3. Para obtener los parámetros en el script externo add.js:
TIP
1.
Diferentes lenguajes de programación tienen distintas formas de obtener argumentos de línea de comandos; consulte la documentación del lenguaje correspondiente.
2.
El tipo de los argumentos de línea de comandos siempre es string; debe convertirlo según los tipos reales.
Como se mencionó anteriormente, Apidog usa el contenido de stdout como resultado de la ejecución del programa. Por lo tanto, imprimir contenido en stdout puede devolver resultados.Por ejemplo, en el script const result = await pm.executeAsync('add.js', [2, 3]), el resultado puede devolverse mediante:
1.
Diferentes lenguajes de programación tienen distintas formas de imprimir en stdout; consulte la documentación del lenguaje correspondiente.
2.
El tipo de retorno es string; debe convertirlo según los tipos reales.
3.
Se recortará el carácter de nueva línea final del resultado.
4.
Al llamar a métodos especificados en paquetes jar, el valor de retorno del método llamado se usará como valor de retorno final.
Dado que pm.executeAsync usa el código de salida en lugar de stderr para determinar el éxito, stderr puede usarse para imprimir información de depuración sin afectar la ejecución.Por ejemplo:
TIP
1.
Solo pm.executeAsync admite esta forma de imprimir información de depuración.
2.
Diferentes lenguajes de programación tienen distintas formas de imprimir en stderr; consulte la documentación correspondiente.
Dado que el valor de retorno de pm.executeAsync es de tipo Promise, execute no puede cambiarse directamente a executeAsync. Pero puede usar async/await para migrar con cambios mínimos.
TIP
Apidog versión 2.3.24 o posterior (CLI versión 1.2.38 o posterior) admite await de nivel superior.
Esta función requiere que la versión de Apidog sea 2.1.39 o posterior. Solo admite llamar a jars con reflexión, no a jars como Spring Boot que usan reflexión en tiempo de ejecución interna.
De forma predeterminada, llamar a un jar invocará el método main en la clase Main. Si se especifica options.className, anulará el comportamiento predeterminado y llamará al método especificado en el jar en su lugar.Llamar a métodos especificados en jars es diferente de otros programas externos. Apidog usará un ejecutor integrado para encontrar el método en el jar mediante reflexión y llamarlo. Si el método llamado tiene un valor de retorno, se usará como valor de retorno final después de convertirlo a string. De lo contrario, funciona igual que otras llamadas, usando el contenido de stdout como valor de retorno.Por ejemplo:
El comando ejecutado real es:
Donde <app-dist>/assets/JarExecuter-1.1.0-jar-with-dependencies.jar es el ejecutor integrado, responsable de encontrar el método com.apidog.Test.combine(String,String) en el programa del usuario ./scripts/jar-1.0-SNAPSHOT.jar mediante reflexión, y llamarlo con los parámetros (cadena JSON) "hello" y "world".
TIP
paramTypes es opcional. Si no se especifica, los tipos se inferirán automáticamente según los parámetros. Los enteros se infieren como "int", los flotantes como "double", los booleanos como "boolean", las cadenas como "String", y los arrays se infieren según el primer elemento; por ejemplo, [3] se infiere como "int[]", [3.14] como "double[]", etc. Si los tipos inferidos no coinciden con los tipos de parámetros reales del método llamado, paramTypes debe especificarse manualmente. Valores admitidos en el 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[]"Por lo tanto, el paramTypes del ejemplo anterior puede omitirse: