Referencia de la API de NJS#
El módulo NJS proporciona objetos, métodos y propiedades para extender la funcionalidad de Angie.
Esta referencia contiene únicamente propiedades, métodos y módulos específicos de NJS que no cumplen con ECMAScript. Las definiciones de propiedades y métodos de NJS que cumplen con ECMAScript se pueden encontrar en la especificación de ECMAScript. El objeto de solicitud HTTP está disponible únicamente en el módulo HTTP JS. Antes de la versión 0.8.5, todas las propiedades de cadena del objeto eran cadenas de bytes. Objeto de argumentos de la solicitud, solo lectura. La cadena de consulta se devuelve como un objeto. Desde la versión 0.7.6, las claves duplicadas se devuelven como un array, las claves distinguen entre mayúsculas y minúsculas, tanto las claves como los valores se decodifican en porcentaje. Por ejemplo, la cadena de consulta se convierte a Se pueden lograr escenarios de análisis más avanzados con el módulo Query String y la variable El objeto de argumentos se evalúa en el primer acceso a Aquí, el objeto de variables de Angie devuelve el primer valor para una clave dada, sin distinguir entre mayúsculas y minúsculas, sin decodificación de porcentaje. Para convertir Después de llamar a esta función, los siguientes fragmentos de datos se pasarán al cliente sin llamar a Escribe una Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. Finaliza el envío de una respuesta al cliente. Objeto de encabezados entrantes, solo lectura. Se puede acceder al encabezado de solicitud Los encabezados de solicitud Objeto de encabezados salientes para la solicitud principal, escribible. Si Se puede acceder al encabezado de respuesta Los encabezados salientes deben establecerse antes de que se envíe un encabezado de respuesta a un cliente; de lo contrario, la actualización del encabezado se ignorará. Esto significa que el manejador el manejador Los valores de campo de los encabezados de respuesta multivalor (0.4.0) se pueden establecer con la sintaxis: donde la salida será: Se eliminarán todos los valores de campo anteriores del encabezado de respuesta Para los encabezados de respuesta estándar que aceptan solo un valor de campo único como Versión HTTP, solo lectura. Valor booleano, Realiza una redirección interna al Nota Después de la redirección, se inicia una nueva VM de NJS en la ubicación de destino, y la VM en la ubicación original se detiene. Los valores de las variables de Angie se mantienen y se pueden usar para pasar información a la ubicación de destino. Desde la versión 0.5.3, se puede usar una variable declarada con la directiva Nota Desde la versión 0.7.4, el método acepta URI escapados. Escribe una Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. Método HTTP, solo lectura. Hace referencia al objeto de solicitud padre. Dirección del cliente, solo lectura. La propiedad quedó obsoleta en la versión 0.5.0 y se eliminó en la versión 0.8.0. En su lugar, se debe usar la propiedad Cuerpo de la solicitud del cliente si no se ha escrito en un archivo temporal (desde la versión 0.5.0). Para asegurar que el cuerpo de la solicitud del cliente esté en memoria, su tamaño debe limitarse mediante Lo mismo que Devuelve un array de pares clave-valor exactamente como se recibieron del cliente (0.4.1). Por ejemplo, con los siguientes encabezados de solicitud: la salida de Todos los encabezados la salida será: Los nombres de los campos de encabezado no se convierten a minúsculas, los valores de campo duplicados no se fusionan. Devuelve un array de pares clave-valor de encabezados de respuesta (0.4.1). Los nombres de los campos de encabezado no se convierten a minúsculas, los valores de campo duplicados no se fusionan. La propiedad quedó obsoleta en la versión 0.5.0 y se eliminó en la versión 0.8.0. En su lugar, se debe usar la propiedad Contiene el cuerpo de respuesta de la subsolicitud, solo lectura (desde la versión 0.5.0). El tamaño de Lo mismo que Envía la respuesta completa con el Es posible especificar una URL de redirección (para los códigos 301, 302, 303, 307 y 308) o el texto del cuerpo de la respuesta (para otros códigos) como segundo argumento. Envía una parte del cuerpo de la respuesta al cliente. Los datos enviados pueden ser una cadena o Buffer (0.5.0). Añade datos a la cadena de fragmentos de datos que se reenviarán al siguiente filtro de cuerpo (0.5.2). El reenvío real ocurre más tarde, cuando se procesan todos los fragmentos de datos de la cadena actual. Los datos pueden ser una cadena o Buffer. Booleano, Booleano, El método solo se puede llamar desde la función Envía las cabeceras HTTP al cliente. Establece el valor de retorno del manejador Estado, escribible. Crea una subsolicitud con el Una subsolicitud comparte sus cabeceras de entrada con la solicitud del cliente. Para enviar cabeceras diferentes de las cabeceras originales a un servidor proxy, se puede usar la directiva Si Cadena de argumentos, por defecto se usa una cadena vacía. Cuerpo de la solicitud, por defecto se usa el cuerpo de la solicitud del objeto de solicitud padre. Método HTTP, por defecto se usa el método Bandera booleana (0.3.9); si es El Desde 0.3.8, si no se proporciona un Por ejemplo, para ver todas las cabeceras de respuesta en la subsolicitud: URI actual en la solicitud, normalizado, solo lectura. Variables de Angie como Buffers, escribible (desde 0.5.0). Objeto de variables de Angie, escribible (desde 0.2.8). Por ejemplo, para obtener la variable Desde 0.8.6, las capturas de expresiones regulares se pueden acceder usando la siguiente sintaxis: Angie trata las variables referenciadas en el Una variable es escribible si: fue creada usando la directiva está referenciada en el archivo de configuración de Angie Aun así, algunas variables integradas todavía no se les puede asignar un valor (por ejemplo, Escribe una Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. El objeto de sesión de stream solo está disponible en el módulo Stream JS. Antes de 0.8.5, todas las propiedades de cadena del objeto eran cadenas de bytes. Un alias de Un alias de Un alias de Establece un Valores de código posibles: Solo se puede llamar desde una función de manejador de fase: Escribe una Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. Escribe una Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. Anula el registro del callback establecido por el método Registra un Un Nuevos datos (cadena) de un cliente. Nuevos datos (cadena) a un cliente. Nuevos datos (Buffer) de un cliente (desde 0.5.0). Nuevos datos (Buffer) a un cliente (desde 0.5.0). El callback de finalización tiene el siguiente prototipo: Un valor booleano, Dirección del cliente, solo lectura. Variables de Angie como Buffers, escribible (desde 0.5.0). Añade datos a la cadena de fragmentos de datos que se reenviarán en la dirección de avance: en el callback de descarga a un cliente; en la carga a un servidor upstream (0.2.4). El reenvío real ocurre más tarde, cuando se procesan todos los fragmentos de datos de la cadena actual. Los datos pueden ser una cadena o Buffer (0.5.0). Booleano, Booleano, El método se puede llamar varias veces por invocación de callback. Idéntico a Idéntico a Código de estado de la sesión, un alias de la variable Establece el valor de retorno del manejador Objeto de variables de Angie, escribible (desde 0.2.8). Una variable solo puede ser escribible si está referenciada en el archivo de configuración de Angie. Aun así, algunas variables integradas todavía no pueden ser asignadas con un valor. Escribe la Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. El objeto Variables de Angie como Buffers, escribibles. Objeto de variables de Angie, escribible. La interfaz Se puede crear un nuevo objeto Un objeto que contiene cabeceras HTTP para prepoblar el objeto Un nuevo objeto Añade un nuevo valor a una cabecera existente en el objeto Elimina una cabecera del objeto Devuelve una cadena que contiene los valores de todas las cabeceras con el nombre especificado separados por una coma y un espacio. Devuelve un array que contiene los valores de todas las cabeceras con el nombre especificado. Ejecuta una función proporcionada una vez por cada par clave/valor en el objeto Devuelve un valor booleano que indica si existe una cabecera con el nombre especificado. Establece un nuevo valor para una cabecera existente dentro del objeto La interfaz Se puede crear un nuevo objeto Crea un objeto El cuerpo de la petición, por defecto está vacío. El objeto de cabeceras de la petición — el objeto que contiene cabeceras HTTP para prepoblar el objeto El método HTTP, por defecto se usa el método GET. Un nuevo objeto Devuelve una Un valor booleano, Contiene el modo de caché de la petición. Contiene las credenciales de la petición, por defecto es El objeto Devuelve una Contiene el método de la petición. Contiene el modo de la petición. Devuelve una Contiene la URL de la petición. La interfaz Se puede crear un nuevo objeto Crea un objeto El objeto de cabeceras de respuesta — el objeto que contiene cabeceras HTTP para prepoblar el objeto El código de estado de la respuesta. El mensaje de estado correspondiente al código de estado. Un nuevo objeto Toma un flujo Un valor booleano, El objeto Toma un flujo Un valor booleano, Un valor booleano, El código de estado de la respuesta. El mensaje de estado correspondiente al código de estado. Toma un flujo El tipo de la respuesta. La URL de la respuesta. El objeto global Una cadena que contiene un nombre de compilación opcional de Angie, corresponde al argumento Una cadena que contiene la ruta del archivo al archivo de configuración actual de Angie (0.8.0). Una cadena que contiene la ruta del archivo al prefijo de configuración de Angie — el directorio donde Angie está buscando actualmente la configuración (0.7.8). Una cadena que contiene la ruta del archivo al archivo de registro de errores actual (0.8.0). Realiza una solicitud para obtener un Si la URL en el Se espera que el parámetro Cuerpo de la solicitud, por defecto está vacío. El tamaño del búfer para leer la respuesta, por defecto es Objeto de encabezados de la solicitud. El tamaño máximo del cuerpo de la respuesta en bytes, por defecto es Método HTTP, por defecto se utiliza el método Habilita o deshabilita la verificación del certificado del servidor HTTPS, por defecto es Ejemplo: Escribe un mensaje en el registro de errores con el nivel de registro especificado. El parámetro Nota Como Angie tiene un límite de longitud máxima de línea codificado, solo se pueden registrar los primeros 2048 bytes de la cadena. Una cadena que contiene la ruta del archivo al prefijo de Angie — un directorio que contiene los archivos del servidor (0.8.0). Una cadena que contiene la versión de Angie, por ejemplo: Un número que contiene la versión de Angie, por ejemplo: Un número que corresponde al ID interno del worker de Angie, el valor está entre El objeto Emite uno o más mensajes de error. El mensaje puede ser una cadena o un objeto. Emite uno o más mensajes informativos. El mensaje puede ser una cadena o un objeto. Emite uno o más mensajes de registro. El mensaje puede ser una cadena o un objeto. Inicia un temporizador que puede rastrear cuánto tiempo tarda una operación. El parámetro Detiene un temporizador iniciado previamente por Emite uno o más mensajes de advertencia. El mensaje puede ser una cadena o un objeto. El objeto Obtiene valores aleatorios criptográficamente fuertes. Devuelve el mismo array pasado como Puede ser Cifra Un objeto que especifica el algoritmo a utilizar y cualquier parámetro adicional si es necesario: Para Una cadena, debe establecerse en Para Una cadena, debe establecerse en Un El número de bits en el bloque contador que se utilizan para el contador real. El contador debe ser lo suficientemente grande como para que no se desborde. Para Una cadena, debe establecerse en El vector de inicialización, es un Para Una cadena, debe establecerse en El vector de inicialización, es un (opcional) es un (opcional, por defecto es Una Un Descifra datos cifrados. Devuelve una Un objeto que especifica el algoritmo a utilizar, y cualquier parámetro adicional según sea necesario. Los valores proporcionados para los parámetros adicionales deben coincidir con los pasados en la llamada correspondiente a Para Una cadena, debe establecerse en Para Una cadena, debe establecerse en Un El número de bits en el bloque contador que se utilizan para el contador real. El contador debe ser lo suficientemente grande como para que no se desborde. Para Una cadena, debe establecerse en El vector de inicialización, es un Para Una cadena, debe establecerse en El vector de inicialización, es un (opcional) es un (opcional, por defecto es Una Un Deriva un array de bits de una clave base. Devuelve una Un objeto que define el algoritmo de derivación a utilizar: Para Una cadena, debe establecerse en Una cadena con el algoritmo de resumen a utilizar: Un Un Para Una cadena, debe establecerse en Una cadena con el algoritmo de resumen a utilizar: Un Un Para Una cadena, debe establecerse en Una Una Un número que representa el número de bits a derivar. Para ser compatible con todos los navegadores, el número debe ser múltiplo de Deriva una clave secreta de una clave maestra. Devuelve una Un objeto que define el algoritmo de derivación a utilizar: Para Una cadena, debe establecerse en Una cadena con el algoritmo de resumen a utilizar: Un Un Para Una cadena, debe establecerse en Una cadena con el algoritmo de resumen a utilizar: Un Un Para Una cadena, debe establecerse en Una Una Un objeto que define el algoritmo que utilizará la clave derivada: Para Una cadena, debe establecerse en Una cadena con el nombre de la función de resumen a utilizar: (opcional) un Para Una cadena, debe establecerse en Un Un valor Un Genera un resumen de los datos proporcionados. Devuelve una Una cadena que define la función hash a utilizar: Un Exporta una clave. Devuelve una Una cadena que describe el formato de datos en el que se exportará la clave. Puede ser uno de los siguientes: La Genera una nueva clave (para algoritmos simétricos) o un par de claves (para algoritmos de clave pública). Devuelve una Un objeto que define el tipo de clave a generar y proporciona atributos específicos del algoritmo adicionales: Para Una cadena, debe establecerse en Un Un Una cadena que representa el nombre de la función de resumen a utilizar: Para Una cadena, debe establecerse en Una cadena que representa el nombre de la curva elíptica a utilizar: Para Una cadena, debe establecerse en Una cadena que representa el nombre de la función de resumen a utilizar: (opcional) un Para Una cadena, debe establecerse en Un Un valor Un Importa una clave. Devuelve una Una cadena que describe el formato de datos de la clave a importar. Puede ser uno de los siguientes: Un Un objeto que define el tipo de clave a importar y proporciona atributos específicos del algoritmo adicionales: Para Una cadena, debe establecerse en Una cadena que representa el nombre de la función de resumen a utilizar: Para Una cadena, debe establecerse en Una cadena que representa el nombre de la curva elíptica a utilizar: Para Una cadena, debe establecerse en Una cadena que representa el nombre de la función de resumen a utilizar: (opcional) un Para Una cadena, debe establecerse en Para Para Un valor Un Firma datos. Devuelve una Una cadena o un objeto que especifica el algoritmo de firma a utilizar y sus parámetros: Para Una cadena, debe establecerse en Para Una cadena, debe establecerse en Un Para Una cadena, debe establecerse en Una cadena que representa el nombre de la función de resumen a utilizar: Para Una cadena, debe establecerse en Una Un Verifica una firma. Devuelve una Una cadena o un objeto que especifica el algoritmo a utilizar y sus parámetros: los valores deben coincidir con los pasados a la llamada correspondiente a Para Una cadena, debe establecerse en Para Una cadena, debe establecerse en Un Para Una cadena, debe establecerse en Una cadena que representa el nombre de la función de resumen a utilizar: Para Una cadena, debe establecerse en Una Un Un El objeto Devuelve un objeto que describe el algoritmo para el cual se puede usar esta clave y cualquier parámetro adicional asociado (desde 0.8.0), solo lectura. Un valor booleano, Un valor de cadena que indica qué tipo de clave está representada por el objeto, solo lectura. Valores posibles: Esta clave es una clave secreta para usar con un algoritmo simétrico. Esta clave es la mitad privada de un Esta clave es la mitad pública de un Un array de cadenas que indica para qué se puede usar esta clave (desde 0.8.0), solo lectura. Valores posibles del array: Clave para cifrar mensajes. Clave para descifrar mensajes. Clave para firmar mensajes. Clave para verificar firmas. Clave para derivar una nueva clave. Clave para derivar bits. El Un objeto Un objeto El objeto Devuelve una cadena con la versión actual de NJS (por ejemplo, "0.7.4"). Devuelve un número con la versión actual de NJS. Por ejemplo, "0.7.4" se devuelve como Devuelve la representación de cadena con formato legible para un valor. Objeto que contiene estadísticas de memoria para la instancia actual de la VM (desde 0.7.8). Cantidad de memoria en bytes que el pool de memoria de NJS ha reclamado del sistema operativo. Registra un callback para el evento de VM especificado (desde 0.5.2). Un evento puede ser una de las siguientes cadenas: Se llama antes de que se destruya la VM. El callback se llama sin argumentos. El objeto Devuelve un array que contiene los argumentos de línea de comandos pasados cuando se inició el proceso actual. Devuelve un objeto que contiene el entorno del usuario. Nota Por defecto, Angie elimina todas las variables de entorno heredadas de su proceso padre excepto la variable TZ. Use la directiva Envía la señal al proceso identificado por Devuelve el PID del proceso actual. Devuelve el PID del proceso padre actual. Por defecto, todas las cadenas en NJS son cadenas Unicode. Corresponden a cadenas ECMAScript que contienen caracteres Unicode. Antes de 0.8.0, también se admitían cadenas de bytes. Nota Desde 0.8.0, se eliminó el soporte para cadenas de bytes y métodos de cadenas de bytes. Al trabajar con secuencias de bytes, se debe usar el objeto Buffer y las propiedades Buffer, como Las cadenas de bytes contenían una secuencia de bytes y se usaban para serializar cadenas Unicode a datos externos y deserializar desde fuentes externas. Por ejemplo, el método Los siguientes métodos quedaron obsoletos y se eliminaron en 0.8.0: El Crea un nuevo objeto Indicador booleano que indica si Devuelve una cadena con el nombre de la codificación usada por Indicador booleano, Indicador booleano, Devuelve una cadena con el texto decodificado del Indicador booleano que indica si seguirán datos adicionales en llamadas posteriores a Ejemplo: El objeto Devuelve un Codifica Codifica una El número de unidades UTF-16 de código de la El número de bytes modificados en el Cancela un objeto Llama a una Ejemplo: Decodifica una cadena de datos que ha sido codificada usando codificación El método similar Ejemplo: Crea una cadena ASCII codificada en Base64 a partir de una cadena binaria. El parámetro El método puede usarse para codificar datos que de otro modo podrían causar problemas de comunicación, transmitirlos y luego usar el método Ejemplo: El objeto Para documentación detallada de los métodos de Buffer, consulte la documentación de Buffer de Node.js. El módulo Crypto proporciona soporte de funcionalidad criptográfica. El objeto del módulo Crypto se importa usando Nota Desde la versión 0.7.0, la API de crypto extendida está disponible como un objeto global crypto. Crea y devuelve un objeto Hash que puede usarse para generar resúmenes hash usando el Crea y devuelve un objeto HMAC que usa el Actualiza el contenido del hash con los Calcula el resumen de todos los datos pasados usando Nota Antes de la versión 0.4.4, se devolvía una cadena de bytes en lugar de un objeto Buffer. Hace una copia del estado actual del hash (desde 0.7.12). Ejemplo: Actualiza el contenido del HMAC con los Calcula el resumen HMAC de todos los datos pasados usando Nota Antes de la versión 0.4.4, se devolvía una cadena de bytes en lugar de un objeto Buffer. El módulo Para documentación detallada de los métodos de fs, consulte la documentación de fs de Node.js. El módulo Query String proporciona métodos para analizar y formatear cadenas de consulta de URL. El objeto del módulo se importa usando Un alias de Un alias de Realiza la codificación de porcentaje de URL de la Analiza la Función a usar al decodificar caracteres codificados en porcentaje en la cadena de consulta, predeterminado: El número máximo de claves a analizar, predeterminado: Ejemplo: Produce una cadena de consulta de URL a partir del Función a usar al convertir caracteres no seguros para URL a codificación de porcentaje en la cadena de consulta, predeterminado: Ejemplo: Realiza la decodificación de caracteres codificados en porcentaje de URL en la El módulo XML permite trabajar con documentos XML (desde 0.7.10). El objeto del módulo XML se importa usando Ejemplo: Analiza una cadena o Buffer para obtener un documento XML; devuelve un objeto envolvente Canonicaliza Permite omitir de la salida una parte del documento. Canonicaliza Un objeto envolvente Permite omitir de la salida una parte del documento correspondiente al nodo y sus hijos. Un valor booleano, Una cadena opcional con prefijos de espacios de nombres separados por espacios para espacios de nombres que también deben incluirse en la salida. Lo mismo que Lo mismo que Un objeto envolvente XMLDoc alrededor de la estructura XML, el nodo raíz del documento. La raíz del documento por su nombre o undefined. La primera etiqueta raíz llamada Un objeto envolvente XMLNode alrededor de un nodo de etiqueta XML. Lo mismo que El valor del atributo Lo mismo que Un objeto envolvente El nombre del nodo. El espacio de nombres del nodo. El nodo padre del nodo actual. La primera etiqueta hija del nodo llamada Un array de todas las etiquetas hijas. Lo mismo que Todas las etiquetas hijas llamadas El contenido del nodo, escribible desde 0.7.11. Lo mismo que Añade un XMLNode como hijo al nodo (desde 0.7.11). Elimina todos los atributos del nodo (desde 0.7.11). Elimina el atributo llamado Elimina todas las etiquetas hijas llamadas Elimina el valor de texto del nodo (0.7.11). Establece un valor para Establece un valor de texto para el nodo (desde 0.7.11). Cuando el valor es Un objeto envolvente XMLAttr alrededor de los atributos del nodo XML. El valor del atributo El módulo Devuelve un diccionario de constantes de zlib. Comprime Comprime Descomprime Descomprime El parámetro Nivel de compresión (por defecto: Especifica cuánta memoria debe asignarse para el estado de compresión (por defecto: Ajusta el algoritmo de compresión (por defecto: Establece el tamaño de la ventana (por defecto: Buffer que contiene el diccionario de compresión predefinido. Un valor booleano, si es Tamaño de fragmento para la compresión (por defecto: Ejemplo:Objetos de Angie#
Solicitud HTTP#
r.args{}r.done()r.error()r.finish()r.headersIn{}r.headersOut{}r.httpVersionr.internalr.internalRedirect()r.log()r.methodr.parentr.remoteAddressr.requestBodyr.requestBufferr.requestTextr.rawHeadersIn[]r.rawHeadersOut[]r.responseBodyr.responseBufferr.responseTextr.return()r.send()r.sendBuffer()r.sendHeader()r.setReturnValue()r.statusr.subrequest()r.urir.rawVariables{}r.variables{}r.warn()r.args{}a=1&b=%32&A=3&b=4&B=two%20words
r.args como:{a: "1", b: ["2", "4"], A: "3", B: "two words"}
$args, por ejemplo:import qs from 'querystring';
function args(r) {
return qs.parse(r.variables.args);
}
r.args. Si solo se necesita un único argumento, por ejemplo foo, se pueden usar las variables de Angie:r.variables.arg_foo
r.args de nuevo a una cadena, se puede usar el método stringify de Query String.r.done()js_body_filter (0.5.2). Solo se puede llamar desde la función js_body_filter.r.error(string)string en el registro de errores en el nivel de registro error.r.finish()r.headersIn{}Foo con la sintaxis: headersIn.foo o headersIn['Foo'].Authorization, Content-Length, Content-Range, Content-Type, ETag, Expect, From, Host, If-Match, If-Modified-Since, If-None-Match, If-Range, If-Unmodified-Since, Max-Forwards, Proxy-Authorization, Referer, Transfer-Encoding y User-Agent pueden tener solo un valor de campo (0.4.1). Los valores de campo duplicados en los encabezados Cookie se separan por punto y coma (;). Los valores de campo duplicados en todos los demás encabezados de solicitud se separan por comas.r.headersOut{}r.headersOut{} es el objeto de respuesta de una subsolicitud, representa los encabezados de respuesta. En este caso, los valores de campo en los encabezados de respuesta Accept-Ranges, Connection, Content-Disposition, Content-Encoding, Content-Length, Content-Range, Date, Keep-Alive, Server, Transfer-Encoding, X-Accel-* pueden omitirse.Foo con la sintaxis: headersOut.foo o headersOut['Foo'].r.headersOut{} es efectivamente escribible en:js_content antes de que se llame a r.sendHeader() o r.return()js_header_filterr.headersOut['Foo'] = ['a', 'b']
Foo: a
Foo: b
Foo.Content-Type, solo el último elemento del array tendrá efecto. Los valores de campo del encabezado de respuesta Set-Cookie siempre se devuelven como un array. Los valores de campo duplicados en los encabezados de respuesta Age, Content-Encoding, Content-Length, Content-Type, ETag, Expires, Last-Modified, Location, Retry-After se ignoran. Los valores de campo duplicados en todos los demás encabezados de respuesta se separan por comas.r.httpVersionr.internaltrue para ubicaciones internas.r.internalRedirect(uri)uri especificado. Si el URI comienza con el prefijo @, se considera una ubicación con nombre. En una nueva ubicación, todo el procesamiento de la solicitud se repite comenzando desde NGX_HTTP_SERVER_REWRITE_PHASE para ubicaciones ordinarias y desde NGX_HTTP_REWRITE_PHASE para ubicaciones con nombre. Como resultado, una redirección a una ubicación con nombre no verifica el límite client_max_body_size. Las solicitudes redirigidas se vuelven internas y pueden acceder a ubicaciones internas. La redirección real ocurre después de que se completa la ejecución del manejador.js_var para HTTP o Stream.r.log(string)string en el registro de errores en el nivel de registro info.r.methodr.parentr.remoteAddressr.requestBodyr.requestBuffer o r.requestText.r.requestBufferclient_max_body_size, y se debe establecer un tamaño de búfer suficiente usando client_body_buffer_size. La propiedad está disponible solo en la directiva js_content.r.requestTextr.requestBuffer, pero devuelve una string. Tenga en cuenta que puede convertir bytes no válidos en la codificación UTF-8 en el carácter de reemplazo.r.rawHeadersIn[]Host: localhost
Foo: bar
foo: bar2
r.rawHeadersIn será:[
['Host', 'localhost'],
['Foo', 'bar'],
['foo', 'bar2']
]
foo se pueden recopilar con la sintaxis:r.rawHeadersIn.filter(v=>v[0].toLowerCase() == 'foo').map(v=>v[1])
['bar', 'bar2']
r.rawHeadersOut[]r.responseBodyr.responseBuffer o r.responseText.r.responseBufferr.responseBuffer está limitado por la directiva subrequest_output_buffer_size.r.responseTextr.responseBuffer pero devuelve una cadena (desde 0.5.0). Tenga en cuenta que puede convertir bytes no válidos en codificación UTF-8 en el carácter de reemplazo.r.return(status[, string | Buffer])status especificado al cliente. La respuesta puede ser una cadena o Buffer (0.5.0).r.send(string | Buffer)r.sendBuffer(data[, options])options es un objeto utilizado para anular las banderas de búfer de Angie derivadas de un búfer de fragmento de datos entrante. Las banderas se pueden anular con las siguientes banderas:lasttrue si el búfer es el último búfer.flushtrue si el búfer debe tener la bandera flush.js_body_filter.r.sendHeader()r.setReturnValue(value)js_set (0.7.0). A diferencia de una declaración de retorno ordinaria, este método debe usarse cuando el manejador es una función asíncrona de JS. Por ejemplo:async function js_set(r) {
const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
r.setReturnValue(digest);
}
r.statusr.subrequest(uri[, options[, callback]])uri y options dados, e instala un callback de finalización opcional.proxy_set_header. Para enviar un conjunto completamente nuevo de cabeceras a un servidor proxy, se puede usar la directiva proxy_pass_request_headers.options es una cadena, entonces contiene la cadena de argumentos de la subsolicitud. De lo contrario, se espera que options sea un objeto con las siguientes claves:argsbodymethodGET.detachedtrue, la subsolicitud creada es una subsolicitud independiente. Las respuestas a subsolicitudes independientes se ignoran. A diferencia de las subsolicitudes ordinarias, una subsolicitud independiente se puede crear dentro de un manejador de variable. La bandera detached y el argumento callback son mutuamente excluyentes.callback de finalización recibe un objeto de respuesta de subsolicitud con métodos y propiedades idénticos al objeto de solicitud padre.callback, se devuelve el objeto Promise que se resuelve en el objeto de respuesta de subsolicitud.async function handler(r) {
const reply = await r.subrequest('/path');
for (const h in reply.headersOut) {
r.log(`${h}: ${reply.headersOut[h]}`);
}
r.return(200);
}
r.urir.rawVariables{}r.variables{}$foo, se puede usar una de las siguientes sintaxis:r.variables['foo']
r.variables.foo
r.variables['1']
r.variables[1]
angie.conf y las variables no referenciadas de manera diferente. Cuando se referencia una variable, puede ser cacheable, pero cuando no se referencia, siempre es no cacheable. Por ejemplo, cuando la variable $request_id solo se accede desde NJS, tiene un nuevo valor cada vez que se evalúa. Pero, cuando $request_id se referencia, por ejemplo:proxy_set_header X-Request-Id $request_id;
r.variables.request_id devuelve el mismo valor cada vez.js_var para HTTP o Stream (desde 0.5.3)$http_).r.warn(string)string en el registro de errores en el nivel de registro warning.Sesión de Stream#
s.allow()s.decline()s.deny()s.done()s.error()s.log()s.off()s.on()s.remoteAddresss.rawVariables{}s.send()s.sendDownstream()s.sendUpstream()s.statuss.setReturnValue()s.variables{}s.warn()s.allow()s.done(0) (0.2.4).s.decline()s.done(-5) (0.2.4).s.deny()s.done(403) (0.2.4).s.done([code])code de salida para el manejador de fase actual a un valor de código, por defecto 0. La finalización real ocurre cuando se completa el manejador js y se procesan todos los eventos pendientes, por ejemplo, de ngx.fetch() o setTimeout() (0.2.4).0 — finalización exitosa, pasando el control a la siguiente fase-5 — indeciso, pasando el control al siguiente manejador de la fase actual (si existe)403 — acceso prohibidojs_access o js_preread.s.error(string)string enviada en el registro de errores en el nivel de registro error.s.log(string)string enviada en el registro de errores en el nivel de registro info.s.off(eventName)s.on() (0.2.4).s.on(event, callback)callback para el event especificado (0.2.4).event puede ser una de las siguientes cadenas:uploaddownloadupstreamdownstreamcallback(data, flags), donde data es cadena o Buffer (dependiendo del tipo de evento); flags es un objeto con las siguientes propiedades:lasttrue si los datos son el último búfer.s.remoteAddresss.rawVariabless.send(data[, options])options es un objeto utilizado para anular las banderas de búfer de Angie derivadas de un búfer de fragmento de datos entrante. Las banderas se pueden anular con las siguientes banderas:lasttrue si el búfer es el último búfer.flushtrue si el búfer debe tener la bandera flush.s.sendDownstream()s.send(), excepto que siempre envía datos a un cliente (desde 0.7.8).s.sendUpstream()s.send(), excepto que siempre envía datos desde un cliente (desde 0.7.8).s.status$status, solo lectura (desde 0.5.2).s.setReturnValue(value)js_set (0.7.0). A diferencia de una sentencia return ordinaria, este método debe usarse cuando el manejador es una función JS asíncrona. Por ejemplo:async function js_set(r) {
const digest = await crypto.subtle.digest('SHA-256', r.headersIn.host);
r.setReturnValue(digest);
}
s.variables{}s.warn(string)string enviada en el registro de errores con el nivel de registro warning.Sesión Periódica#
PeriodicSession.rawVariables{}PeriodicSession.variables{}Periodic Session se proporciona como el primer argumento para el manejador js_periodic para HTTP y Stream (desde 0.8.1).PeriodicSession.rawVariables{}PeriodicSession.variables{}Headers#
Headers()Headers.append()Headers.delete()Headers.get()Headers.getAll()Headers.forEach()Headers.has()Headers.set()Headers de la API Fetch está disponible desde 0.5.1.Headers usando el constructor Headers() (desde 0.7.10):Headers([init])initHeaders, puede ser un string, un array de pares nombre-valor, o un objeto Headers existente.Headers tiene las siguientes propiedades y métodos:append()Headers, o añade la cabecera si aún no existe (desde 0.7.10).delete()Headers (desde 0.7.10).get()getAll(name)forEach()Headers (desde 0.7.10).has()set()Headers, o añade la cabecera si aún no existe (desde 0.7.10).Request#
Request()Request.arrayBuffer()Request.bodyUsedRequest.cacheRequest.credentialsRequest.headersRequest.json()Request.methodRequest.modeRequest.text()Request.urlRequest de la API Fetch está disponible desde 0.7.10.Request usando el constructor Request():Request[resource[, options]])Request para obtener que puede pasarse posteriormente a ngx.fetch(). El resource puede ser una URL o un objeto Request existente. El options es un argumento opcional que se espera que sea un objeto con las siguientes claves:bodyheadersHeaders, puede ser un string, un array de pares nombre-valor, o un objeto Headers existente.methodRequest tiene las siguientes propiedades y métodos:arrayBuffer()Promise que se resuelve con un ArrayBuffer.bodyUsedtrue si el cuerpo fue usado en la petición.cachecredentialssame-origin.headersHeaders de solo lectura asociado con el Request.json()Promise que se resuelve con el resultado de analizar el cuerpo de la petición como JSON.methodmodetext()Promise que se resuelve con una representación de cadena del cuerpo de la petición.urlResponse#
Response()Response.arrayBuffer()Response.bodyUsedResponse.headersResponse.json()Response.okResponse.redirectedResponse.statusResponse.statusTextResponse.text()Response.typeResponse.urlResponse está disponible desde 0.5.1.Response usando el constructor Response() (desde 0.7.10):Response[body[, options]])Response. El body es un argumento opcional, puede ser un string o un buffer, por defecto es null. El options es un argumento opcional que se espera que sea un objeto con las siguientes claves:headersHeaders, puede ser un string, un array de pares nombre-valor, o un objeto Headers existente.statusstatusTextResponse() tiene las siguientes propiedades y métodos:arrayBuffer()Response y lo lee hasta completarlo. Devuelve una Promise que se resuelve con un ArrayBuffer.bodyUsedtrue si el cuerpo fue leído.headersHeaders de solo lectura asociado con el Response.json()Response y lo lee hasta completarlo. Devuelve una Promise que se resuelve con el resultado de analizar el texto del cuerpo como JSON.oktrue si la respuesta fue exitosa (códigos de estado entre 200–299).redirectedtrue si la respuesta es el resultado de una redirección.statusstatusTexttext()Response y lo lee hasta completarlo. Devuelve una Promise que se resuelve con una cadena.typeurlngx#
ngx.buildngx.conf_file_pathngx.conf_prefixngx.error_log_pathngx.fetch()ngx.log()ngx.prefixngx.versionngx.version_numberngx.worker_idngx está disponible desde 0.5.0.ngx.build--build=name del script configure, por defecto es "" (0.8.0).ngx.conf_file_pathngx.conf_prefixngx.error_log_pathngx.fetch(resource, [options])resource (0.5.1), que puede ser una URL o el objeto Request (0.7.10). Devuelve una Promise que se resuelve con el objeto Response. Desde 0.7.0, se admite el esquema https://; las redirecciones no se gestionan.resource se especifica como un nombre de dominio, se resuelve utilizando un resolver. Si se especifica el esquema https://, la directiva js_fetch_trusted_certificate debe configurarse para la autenticación del servidor HTTPS del resource.options sea un objeto con las siguientes claves:bodybuffer_size4096.headersmax_response_body_size32768.methodGET.verifytrue (0.7.0).let reply = await ngx.fetch('http://example.com/');
let body = await reply.text();
r.return(200, body);
ngx.log(level, message)level especifica uno de los niveles de registro; el parámetro message puede ser una cadena o Buffer. Se pueden especificar los siguientes niveles de registro: ngx.INFO, ngx.WARN y ngx.ERR.ngx.prefixngx.version1.25.0 (0.8.0).ngx.version_number1025000 (0.8.0).ngx.worker_id0 y el valor especificado en la directiva worker_processes (0.8.0).Objetos Integrados#
console#
console.error()console.info()console.log()console.time()console.timeEnd()console.warn()console está disponible en Angie desde 0.8.2, en CLI desde 0.2.6.console.error(msg[, msg2 ...])console.info(msg[, msg2 ...])console.log(msg[, msg2 ...])console.time(label)label permite nombrar diferentes temporizadores. Si se llama a console.timeEnd() con el mismo nombre, se emitirá el tiempo transcurrido desde que se inició el temporizador, en milisegundos.console.timeEnd(label)console.time(). El parámetro label permite nombrar diferentes temporizadores.console.warn(msg[, msg2 ...])crypto#
crypto.getRandomValues()crypto.subtle.encrypt()crypto.subtle.decrypt()crypto.subtle.deriveBits()crypto.subtle.deriveKey()crypto.subtle.digest()crypto.subtle.exportKey()crypto.subtle.generateKey()crypto.subtle.importKey()crypto.subtle.sign()crypto.subtle.verify()crypto es un objeto global que permite utilizar funcionalidad criptográfica (desde 0.7.0).crypto.getRandomValues(typedArray)typedArray pero con su contenido reemplazado por los números aleatorios recién generados. Valores posibles:typedArrayInt8Array, Int16Array, Uint16Array, Int32Array, o Uint32Array.crypto.subtle.encrypt(algorithm, key, data)data utilizando el algorithm y la key proporcionados. Devuelve una Promise que se cumple con un ArrayBuffer que contiene el texto cifrado. Valores posibles:algorithmRSA-OAEP, pase un objeto con las siguientes claves:nameRSA-OAEP:crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
AES-CTR, pase un objeto con las siguientes claves:nameAES-CTR.counterArrayBuffer, TypedArray, o DataView — el valor inicial del bloque contador, debe tener 16 bytes de longitud (el tamaño de bloque AES). Los bits de longitud más a la derecha de este bloque se utilizan para el contador, y el resto se utiliza para el nonce. Por ejemplo, si la longitud se establece en 64, entonces la primera mitad del contador es el nonce y la segunda mitad se utiliza para el contador.lengthAES-CBC, pase un objeto con las siguientes claves:nameAES-CBC.ivArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, ser impredecible y preferiblemente criptográficamente aleatorio. Sin embargo, no necesita ser secreto, por ejemplo, puede transmitirse sin cifrar junto con el texto cifrado.AES-GCM, pase un objeto con las siguientes claves:nameAES-GCM.ivArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, y debe ser único para cada operación de cifrado realizada con una clave dada.additionalDataArrayBuffer, TypedArray, o DataView que contiene datos adicionales que no se cifrarán pero se autenticarán junto con los datos cifrados. Si se especifica additionalData, entonces los mismos datos deben especificarse en la llamada correspondiente a decrypt(): si los datos proporcionados a la llamada decrypt() no coinciden con los datos originales, el descifrado lanzará una excepción. La longitud en bits de additionalData debe ser menor que 2^64 - 1.tagLength128) - un number que determina el tamaño en bits de la etiqueta de autenticación generada en la operación de cifrado y utilizada para la autenticación en el descifrado correspondiente. Valores posibles: 32, 64, 96, 104, 112, 120, o 128. La especificación AES-GCM recomienda que debe ser 96, 104, 112, 120, o 128, aunque 32 o 64 bits pueden ser aceptables en algunas aplicaciones.keyCryptoKey que contiene la clave a utilizar para el cifrado.dataArrayBuffer, TypedArray, o DataView que contiene los datos a cifrar (también conocidos como texto plano).crypto.subtle.decrypt(algorithm, key, data)Promise con los datos descifrados. Valores posibles:algorithmencrypt().RSA-OAEP, pase un objeto con las siguientes claves:nameRSA-OAEP:crypto.subtle.encrypt({name: "RSA-OAEP"}, key, data)
AES-CTR, pase un objeto con las siguientes claves:nameAES-CTR.counterArrayBuffer, TypedArray, o DataView — el valor inicial del bloque contador, debe tener 16 bytes de longitud (el tamaño de bloque AES). Los bits de longitud más a la derecha de este bloque se utilizan para el contador, y el resto se utiliza para el nonce. Por ejemplo, si la longitud se establece en 64, entonces la primera mitad del contador es el nonce y la segunda mitad se utiliza para el contador.lengthAES-CBC, pase un objeto con las siguientes claves:nameAES-CBC.ivArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, ser impredecible y preferiblemente criptográficamente aleatorio. Sin embargo, no necesita ser secreto (por ejemplo, puede transmitirse sin cifrar junto con el texto cifrado).AES-GCM, pase un objeto con las siguientes claves:nameAES-GCM.ivArrayBuffer, TypedArray, o DataView, debe tener 16 bytes, y debe ser único para cada operación de cifrado realizada con una clave dada.additionalDataArrayBuffer, TypedArray, o DataView que contiene datos adicionales que no se cifrarán pero se autenticarán junto con los datos cifrados. Si se especifica additionalData, entonces los mismos datos deben especificarse en la llamada correspondiente a decrypt(): si los datos proporcionados a la llamada decrypt() no coinciden con los datos originales, el descifrado lanzará una excepción. La longitud en bits de additionalData debe ser menor que 2^64 - 1.tagLength128) - un number que determina el tamaño en bits de la etiqueta de autenticación generada en la operación de cifrado y utilizada para la autenticación en el descifrado correspondiente. Valores posibles: 32, 64, 96, 104, 112, 120, o 128. La especificación AES-GCM recomienda que debe ser 96, 104, 112, 120, o 128, aunque 32 o 64 bits pueden ser aceptables en algunas aplicaciones.keyCryptoKey que contiene la clave a utilizar para el descifrado. Si se utiliza RSA-OAEP, esta es la propiedad privateKey del objeto CryptoKeyPair.dataArrayBuffer, TypedArray, o DataView que contiene los datos a descifrar (también conocidos como texto cifrado).crypto.subtle.deriveBits(algorithm, baseKey, length)Promise que se cumplirá con un ArrayBuffer que contiene los bits derivados. Valores posibles:algorithmHKDF, pase un objeto con las siguientes claves:nameHKDF.hashSHA-1, SHA-256, SHA-384, o SHA-512.saltArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio con la misma longitud que la salida de la función digest. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.infoArrayBuffer, TypedArray, o DataView que representa información contextual específica de la aplicación utilizada para vincular la clave derivada a una aplicación o contexto, y permite derivar diferentes claves para diferentes contextos mientras se utiliza el mismo material de clave de entrada. Esta propiedad es obligatoria pero puede ser un búfer vacío.PBKDF2, pase un objeto con las siguientes claves:namePBKDF2.hashSHA-1, SHA-256, SHA-384, o SHA-512.saltArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio de al menos 16 bytes. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.iterationsnumber que representa el número de veces que se ejecutará la función hash en deriveKey().ECDH, pase un objeto con las siguientes claves (desde 0.9.1):nameECDH.publicCryptoKey que representa la clave pública de la otra parte. La clave debe generarse utilizando la misma curva que la clave base.baseKeyCryptoKey que representa la entrada al algoritmo de derivación. Si algorithm es HKDF o PBKDF2, debe ser una clave secreta. Si algorithm es ECDH, debe ser una clave privada ECDH.length8.crypto.subtle.deriveKey(algorithm, baseKey, derivedKeyAlgorithm, extractable, keyUsages)Promise que se cumple con un objeto CryptoKey que representa la nueva clave. Valores posibles:algorithmHKDF, pase el objeto con las siguientes claves:nameHKDF.hashSHA-1, SHA-256, SHA-384, o SHA-512.saltArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio con la misma longitud que la salida de la función digest. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.infoArrayBuffer, TypedArray, o DataView que representa información contextual específica de la aplicación utilizada para vincular la clave derivada a una aplicación o contexto, y permite derivar diferentes claves para diferentes contextos mientras se utiliza el mismo material de clave de entrada. Esta propiedad es obligatoria pero puede ser un búfer vacío.PBKDF2, pase el objeto con las siguientes claves:namePBKDF2.hashSHA-1, SHA-256, SHA-384, o SHA-512.saltArrayBuffer, TypedArray, o DataView que representa un valor aleatorio o pseudoaleatorio de al menos 16 bytes. A diferencia del material de clave de entrada pasado a deriveKey(), el salt no necesita mantenerse en secreto.iterationsnumber que representa el número de veces que se ejecutará la función hash en deriveKey().ECDH, pase un objeto con las siguientes claves (desde 0.9.1):nameECDH.publicKeyCryptoKey que representa la clave pública de la otra parte. La clave debe generarse utilizando la misma curva que la clave base.baseKeyCryptoKey que representa la entrada al algoritmo de derivación. Si algorithm es HKDF o PBKDF2, debe ser una clave secreta. Si algorithm es ECDH, debe ser una clave privada ECDH.derivedKeyAlgorithmHMAC, pase un objeto con las siguientes claves:nameHMAC.hashSHA-1, SHA-256, SHA-384, o SHA-512.lengthnumber que representa la longitud en bits de la clave. Si se omite, la longitud de la clave es igual al tamaño de bloque de la función hash elegida.AES-CTR, AES-CBC, o AES-GCM, pase un objeto con las siguientes claves:nameAES-CTR, AES-CBC, o AES-GCM, dependiendo del algoritmo utilizado.lengthnumber que representa la longitud en bits de la clave a generar: puede ser 128, 192, o 256.extractableboolean que indica si será posible exportar la clave utilizando exportKey() o wrapKey().keyUsagesarray de cadenas que indica qué se puede hacer con la clave derivada. Los valores posibles del array son encrypt, decrypt, sign, verify, deriveKey, deriveBits, wrapKey, unwrapKey.crypto.subtle.digest(algorithm, data)Promise que se cumple con un ArrayBuffer que contiene el resumen. Valores posibles:algorithmSHA-1, SHA-256, SHA-384, o SHA-512.dataArrayBuffer, TypedArray, o DataView que contiene los datos de los que se generará el resumen.crypto.subtle.exportKey(format, key)Promise. Si format era jwk, entonces la promesa se cumple con un objeto JSON que contiene la clave. De lo contrario, la promesa se cumple con un ArrayBuffer que contiene la clave. Valores posibles:formatraw: formato Raw, un ArrayBuffer que contiene los bytes de la clave.pkcs8: formato PKCS #8, un ArrayBuffer que contiene los datos de clave privada codificados en PKCS #8.spki: formato SubjectPublicKeyInfo, un ArrayBuffer que contiene los datos de clave pública codificados en SubjectPublicKeyInfo.jwk: formato JSON Web Key, un objeto JSON que contiene la clave.keyCryptoKey a exportar.crypto.subtle.generateKey(algorithm, extractable, keyUsages)Promise que se cumple con una CryptoKey (para algoritmos simétricos) o un objeto CryptoKeyPair (para algoritmos de clave pública). Valores posibles:algorithmRSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, pase un objeto con las siguientes claves:nameRSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, dependiendo del algoritmo utilizado.modulusLengthnumber que representa la longitud en bits del módulo RSA, debe ser al menos 1024.publicExponentUint8Array que representa el exponente público. A menos que tenga una buena razón para usar algo más, especifique 65537 aquí ([0x01, 0x00, 0x01]).hashSHA-256, SHA-384, o SHA-512.ECDSA o ECDH, pase un objeto con las siguientes claves:nameECDSA o ECDH, dependiendo del algoritmo utilizado.namedCurveP-256, P-384, o P-521.HMAC, pase un objeto con las siguientes claves:nameHMAC.hashSHA-1, SHA-256, SHA-384, o SHA-512.lengthnumber que representa la longitud en bits de la clave. Si se omite, la longitud de la clave es igual al tamaño de bloque de la función hash elegida.AES-CTR, AES-CBC, o AES-GCM, pase un objeto con las siguientes claves:nameAES-CTR, AES-CBC, o AES-GCM, dependiendo del algoritmo utilizado.lengthnumber que representa la longitud en bits de la clave a generar: puede ser 128, 192, o 256.extractableboolean que indica si será posible exportar la clave utilizando exportKey() o wrapKey().keyUsagesarray de cadenas que indica qué se puede hacer con la clave. Los valores posibles del array son encrypt, decrypt, sign, verify, deriveKey, deriveBits, wrapKey, unwrapKey.crypto.subtle.importKey(format, keyData, algorithm, extractable, keyUsages)Promise que se cumple con el objeto CryptoKey importado. Valores posibles:formatraw: formato Raw, un ArrayBuffer que contiene los bytes de la clave.pkcs8: formato PKCS #8, un ArrayBuffer que contiene los datos de clave privada codificados en PKCS #8.spki: formato SubjectPublicKeyInfo, un ArrayBuffer que contiene los datos de clave pública codificados en SubjectPublicKeyInfo.jwk: formato JSON Web Key, un objeto JSON que contiene la clave.keyDataArrayBuffer, TypedArray, DataView, o JSONWebKey que contiene la clave en el formato dado.algorithmRSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, pase un objeto con las siguientes claves:nameRSASSA-PKCS1-v1_5, RSA-PSS, o RSA-OAEP, dependiendo del algoritmo utilizado.hashSHA-256, SHA-384, o SHA-512.ECDSA o ECDH, pase un objeto con las siguientes claves:nameECDSA o ECDH, dependiendo del algoritmo utilizado.namedCurveP-256, P-384, o P-521.HMAC, pase un objeto con las siguientes claves:nameHMAC.hashSHA-1, SHA-256, SHA-384, o SHA-512.lengthnumber que representa la longitud en bits de la clave. Si se omite, la longitud de la clave es igual al tamaño de bloque de la función hash elegida.AES-CTR, AES-CBC, o AES-GCM, pase un objeto con las siguientes claves:nameAES-CTR, AES-CBC, o AES-GCM, dependiendo del algoritmo utilizado.PBKDF2, pase la cadena PBKDF2.HKDF, pase la cadena HKDF.extractableboolean que indica si será posible exportar la clave utilizando exportKey() o wrapKey().keyUsagesarray de cadenas que indica qué se puede hacer con la clave. Los valores posibles del array son encrypt, decrypt, sign, verify, deriveKey, deriveBits, wrapKey, unwrapKey.crypto.subtle.sign(algorithm, key, data)Promise que se cumple con un ArrayBuffer que contiene la firma. Valores posibles:algorithmRSASSA-PKCS1-v1_5, pase la cadena RSASSA-PKCS1-v1_5 o un objeto con las siguientes claves:nameRSASSA-PKCS1-v1_5.RSA-PSS, pase un objeto con las siguientes claves:nameRSA-PSS.saltLengthnumber que representa la longitud del salt aleatorio a utilizar, en bytes.ECDSA, pase un objeto con las siguientes claves:nameECDSA.hashSHA-256, SHA-384, o SHA-512.HMAC, pase la cadena HMAC o un objeto con las siguientes claves:nameHMAC.keyCryptoKey que contiene la clave a utilizar para firmar. Si algorithm identifica un algoritmo de clave pública, esta es la clave privada.dataArrayBuffer, TypedArray, o DataView que contiene los datos a firmar.crypto.subtle.verify(algorithm, key, signature, data)Promise que se cumple con un valor boolean: true si la firma es válida, false en caso contrario. Valores posibles:algorithmsign().RSASSA-PKCS1-v1_5, pase la cadena RSASSA-PKCS1-v1_5 o un objeto con las siguientes claves:nameRSASSA-PKCS1-v1_5.RSA-PSS, pase un objeto con las siguientes claves:nameRSA-PSS.saltLengthnumber que representa la longitud del salt aleatorio a utilizar, en bytes.ECDSA, pase un objeto con las siguientes claves:nameECDSA.hashSHA-256, SHA-384, o SHA-512.HMAC, pase la cadena HMAC o un objeto con las siguientes claves:nameHMAC.keyCryptoKey que contiene la clave a utilizar para la verificación. Es la clave secreta para un algoritmo simétrico y la clave pública para un sistema de clave pública.signatureArrayBuffer que contiene la firma a verificar.dataArrayBuffer, TypedArray, o DataView que contiene los datos cuya firma se va a verificar.CryptoKey#
CryptoKey.algorithmCryptoKey.extractableCryptoKey.typeCryptoKey.usagesCryptoKey representa una clave criptográfica obtenida de uno de los métodos SubtleCrypto: crypto.subtle.generateKey(), crypto.subtle.deriveKey(), crypto.subtle.importKey().CryptoKey.algorithmCryptoKey.extractabletrue si la clave se puede exportar (desde 0.8.0), solo lectura.CryptoKey.typesecretprivateCryptoKeyPair de algoritmo asimétrico.publicCryptoKeyPair de algoritmo asimétrico.CryptoKey.usagesencryptdecryptsignverifyderiveKeyderiveBitsCryptoKeyPair#
CryptoKeyPair.privateKeyCryptoKeyPair.publicKeyCryptoKeyPair es un objeto de diccionario de la API WebCrypto que representa un par de claves asimétricas.CryptoKeyPair.privateKeyCryptoKey que representa la clave privada.CryptoKeyPair.publicKeyCryptoKey que representa la clave pública.njs#
njs.versionnjs.version_numbernjs.dump()njs.memoryStatsnjs.on()njs es un objeto global que representa la instancia actual de la VM (desde 0.2.0).njs.versionnjs.version_number0x000704 (desde 0.7.4).njs.dump(value)njs.memoryStatssizenjs.on(event, callback)exitprocess#
process.argvprocess.envprocess.kill()process.pidprocess.ppidprocess es un objeto global que proporciona información sobre el proceso actual (0.3.3).process.argvprocess.envenv para preservar algunas de las variables heredadas.process.kill(pid, number | string)pid. Los nombres de señal son números o cadenas como SIGINT o SIGHUP. Consulte kill(2) para más información.process.pidprocess.ppidString#
Cadenas de Bytes (Eliminadas)#
r.requestBuffer, r.rawVariables.toUTF8() serializaba una cadena Unicode a una cadena de bytes usando codificación UTF-8. El método toBytes() serializaba una cadena Unicode con puntos de código hasta 255 en una cadena de bytes; de lo contrario, se devolvía null.String.bytesFrom() (eliminado en 0.8.0, use Buffer.from())String.prototype.fromBytes() (eliminado en 0.8.0)String.prototype.fromUTF8() (eliminado en 0.8.0, use TextDecoder)String.prototype.toBytes() (eliminado en 0.8.0)String.prototype.toString() con codificación (eliminado en 0.8.0)String.prototype.toUTF8() (eliminado en 0.8.0, use TextEncoder)API Web#
TextDecoder#
TextDecoder()TextDecoder.prototype.encodingTextDecoder.prototype.fatalTextDecoder.prototype.ignoreBOMTextDecoder.prototype.decode()TextDecoder produce un flujo de puntos de código a partir de un flujo de bytes (0.4.3).TextDecoder([[encoding], options])TextDecoder para la codificación especificada; actualmente, solo se admite UTF-8. El options es un diccionario TextDecoderOptions con la propiedad:fatalTextDecoder.decode() debe lanzar la excepción TypeError cuando se encuentra un error de codificación, por defecto es false.TextDecoder.prototype.encodingTextDecoder(), solo lectura.TextDecoder.prototype.fataltrue si el modo de error es fatal, solo lectura.TextDecoder.prototype.ignoreBOMtrue si se ignora la marca de orden de bytes, solo lectura.TextDecoder.prototype.decode(buffer, [options])buffer por TextDecoder(). El buffer puede ser ArrayBuffer. El options es un diccionario TextDecodeOptions con la propiedad:streamdecode(): true si se procesan los datos en fragmentos, y false para el fragmento final o si los datos no están fragmentados. Por defecto es false.>> (new TextDecoder()).decode(new Uint8Array([206,177,206,178]))
αβ
TextEncoder#
TextEncoder()TextEncoder.prototype.encode()TextEncoder.prototype.encodeInto()TextEncoder produce un flujo de bytes con codificación UTF-8 a partir de un flujo de puntos de código (0.4.3).TextEncoder()TextEncoder recién construido que generará un flujo de bytes con codificación UTF-8.TextEncoder.prototype.encode(string)string en un Uint8Array con texto codificado en UTF-8.TextEncoder.prototype.encodeInto(string, uint8Array)string a UTF-8, coloca el resultado en el Uint8Array de destino y devuelve un objeto de diccionario que muestra el progreso de la codificación. El objeto de diccionario contiene dos miembros:readstring de origen convertidas a UTF-8.writtenUint8Array de destino.Temporizadores#
clearTimeout()setTimeout()clearTimeout(timeout)timeout creado por setTimeout().setTimeout(function, milliseconds[, argument1, argumentN])function después de un número especificado de milliseconds. Se pueden pasar uno o más arguments opcionales a la función especificada. Devuelve un objeto timeout.function handler(v)
{
// ...
}
t = setTimeout(handler, 12);
// ...
clearTimeout(t);
Funciones Globales#
atob()btoa()atob(encodedData)Base64. El parámetro encodedData es una cadena binaria que contiene datos codificados en Base64. Devuelve una cadena que contiene los datos decodificados de encodedData.btoa() puede usarse para codificar y transmitir datos que de otro modo podrían causar problemas de comunicación, luego transmitirlos y usar el método atob() para decodificar los datos nuevamente. Por ejemplo, puede codificar, transmitir y decodificar caracteres de control como los valores ASCII 0 hasta 31.const encodedData = btoa("text to encode"); // encode a string
const decodedData = atob(encodedData); // decode the string
btoa(stringToEncode)stringToEncode es una cadena binaria a codificar. Devuelve una cadena ASCII que contiene la representación Base64 de stringToEncode.atob() para decodificar los datos nuevamente. Por ejemplo, puede codificar caracteres de control como los valores ASCII 0 hasta 31.const encodedData = btoa("text to encode"); // encode a string
const decodedData = atob(encodedData); // decode the string
Módulos Integrados#
Buffer#
Buffer es una forma compatible con Node.js de trabajar con datos binarios. Debido al extenso tamaño del archivo, esta sección se limita a una lista completa de métodos de Buffer.Buffer.alloc()Buffer.allocUnsafe()Buffer.byteLength()Buffer.compare()Buffer.concat()Buffer.from(array)Buffer.from(arrayBuffer)Buffer.from(buffer)Buffer.from(object)Buffer.from(string)Buffer.isBuffer()Buffer.isEncoding()buffer[]buf.bufferbuf.byteOffsetbuf.compare()buf.copy()buf.equals()buf.fill()buf.includes()buf.indexOf()buf.lastIndexOf()buf.lengthbuf.readIntBE()buf.readIntLE()buf.readUIntBE()buf.readUIntLE()buf.readDoubleBE()buf.readDoubleLE()buf.readFloatBE()buf.readFloatLE()buf.subarray()buf.slice()buf.swap16()buf.swap32()buf.swap64()buf.toJSON()buf.toString()buf.write()buf.writeIntBE()buf.writeIntLE()buf.writeUIntBE()buf.writeUIntLE()buf.writeDoubleBE()buf.writeDoubleLE()buf.writeFloatBE()buf.writeFloatLE()Crypto#
import crypto from 'crypto'.crypto.createHash()crypto.createHmac()crypto.createHash(algorithm)algorithm dado. El algoritmo puede ser md5, sha1 y sha256.crypto.createHmac(algorithm, secret key)algorithm y la secret key dados. El algoritmo puede ser md5, sha1 y sha256.Hash#
hash.update()hash.digest()hash.copy()hash.update(data)data dados.hash.digest([encoding])hash.update(). La codificación puede ser hex, base64 y base64url. Si no se proporciona codificación, se devuelve un objeto Buffer (0.4.4).hash.copy()import crypto from 'crypto';
crypto.createHash('sha1').update('A').update('B').digest('base64url');
/* BtlFlCqiamG-GMPiK_GbvKjdK10 */
HMAC#
hmac.update()hmac.digest()hmac.update(data)data dados.hmac.digest([encoding])hmac.update(). La codificación puede ser hex, base64 y base64url. Si no se proporciona codificación, se devuelve un objeto Buffer (0.4.4).fs#
fs proporciona operaciones con el sistema de archivos. El objeto del módulo se importa usando import fs from 'fs'.fs.accessSync()fs.appendFileSync()fs.mkdirSync()fs.readdirSync()fs.readFileSync()fs.realpathSync()fs.renameSync()fs.rmdirSync()fs.symlinkSync()fs.unlinkSync()fs.writeFileSync()fs.promises.readFile()fs.promises.appendFile()fs.promises.writeFile()fs.promises.readdir()fs.promises.mkdir()fs.promises.rmdir()fs.promises.rename()fs.promises.unlink()fs.promises.symlink()fs.promises.access()fs.promises.realpath()Query String#
import qs from 'querystring'.querystring.decode()querystring.encode()querystring.escape()querystring.parse()querystring.stringify()querystring.unescape()querystring.decode()querystring.parse().querystring.encode()querystring.stringify().querystring.escape(string)string de manera optimizada para los requisitos de las cadenas de consulta de URL. El método es usado por querystring.stringify() y no debe usarse directamente.querystring.parse(string[, separator[, equal[, options]]])string como una cadena de consulta de URL y devuelve un objeto. El parámetro opcional separator (predeterminado: &) especifica la subcadena para delimitar pares clave-valor. El parámetro opcional equal (predeterminado: =) especifica la subcadena para delimitar claves y valores. El parámetro opcional options es un objeto que puede contener la siguiente propiedad:decodeURIComponentquerystring.unescape().maxKeys1000. El valor 0 elimina las limitaciones para contar claves.>> qs.parse('foo=bar&abc=xyz&abc=123')
{
foo: 'bar',
abc: ['xyz', '123']
}
querystring.stringify(object[, separator[, equal[, options]]])object iterando a través de sus propias propiedades. El parámetro opcional separator (predeterminado: &) especifica la subcadena para delimitar pares clave-valor. El parámetro opcional equal (predeterminado: =) especifica la subcadena para delimitar claves y valores. El parámetro opcional options es un objeto que puede contener la siguiente propiedad:encodeURIComponentquerystring.escape().>> qs.stringify({ foo: 'bar', baz: ['qux', 'quux'], corge: '' })
'foo=bar&baz=qux&baz=quux&corge='
querystring.unescape(string)string. El método es usado por querystring.parse() y no debe usarse directamente.XML#
xml.parse()xml.c14n()xml.exclusiveC14n()xml.serialize()xml.serializeToString()XMLDocXMLNodeXMLAttrimport xml from 'xml'.import xml from 'xml';
let data = `<note><to b="bar" a= "foo" >Tove</to><from>Jani</from></note>`;
let doc = xml.parse(data);
console.log(doc.note.to.$text) /* 'Tove' */
console.log(doc.note.to.$attr$b) /* 'bar' */
console.log(doc.note.$tags[1].$text) /* 'Jani' */
let dec = new TextDecoder();
let c14n = dec.decode(xml.exclusiveC14n(doc.note));
console.log(c14n) /* '<note><to a="foo" b="bar">Tove</to><from>Jani</from></note>' */
c14n = dec.decode(xml.exclusiveC14n(doc.note.to));
console.log(c14n) /* '<to a="foo" b="bar">Tove</to>' */
c14n = dec.decode(xml.exclusiveC14n(doc.note, doc.note.to /* excluding 'to' */));
console.log(c14n) /* '<note><from>Jani</from></note>' */
parse(string | Buffer)XMLDoc que representa el documento XML analizado.c14n(root_node[, excluding_node])root_node y sus hijos según Canonical XML Version 1.1. El root_node puede ser un objeto envolvente XMLNode o XMLDoc alrededor de la estructura XML. Devuelve un objeto Buffer que contiene la salida canonicalizada.excluding_nodeexclusiveC14n(root_node[, excluding_node[, withComments[,prefix_list]]])root_node y sus hijos según Exclusive XML Canonicalization Version 1.0.root_nodeXMLNode o XMLDoc alrededor de la estructura XML.excluding_nodewithCommentsfalse por defecto. Si es true, la canonicalización corresponde a Exclusive XML Canonicalization Version 1.0. Devuelve un objeto Buffer que contiene la salida canonicalizada.prefix_listserialize()xml.c14n() (desde 0.7.11).serializeToString()xml.c14n() excepto que devuelve el resultado como string (desde 0.7.11).XMLDocdoc.$rootdoc.abcabc como un objeto envolvente XMLNode.XMLNodenode.abcnode.$tag$abc.node.$attr$abcabc del nodo, escribible desde 0.7.11.node.$attr$abc=xyznode.setAttribute('abc', xyz) (desde 0.7.11).node.$attrsXMLAttr para todos los atributos del nodo.node.$namenode.$nsnode.$parentnode.$tag$abcabc, escribible desde 0.7.11.node.$tagsnode.$tags = [node1, node2, ...]node.removeChildren(); node.addChild(node1); node.addChild(node2) (desde 0.7.11).node.$tags$abcabc del nodo, escribible desde 0.7.11.node.$textnode.$text = 'abc'node.setText('abc') (desde 0.7.11).node.addChild(nd)nd se copia recursivamente antes de añadirse al nodo.node.removeAllAttributes()node.removeAttribute(attr_name)attr_name (desde 0.7.11).node.removeChildren(tag_name)tag_name (desde 0.7.11). Si tag_name está ausente, se eliminan todas las etiquetas hijas.node.removeText()node.setAttribute(attr_name, value)attr_name (desde 0.7.11). Cuando el valor es null, se elimina el atributo llamado attr_name.node.setText(value)null, se elimina el texto del nodo.XMLAttrattr.abcabc.zlib#
zlib (0.5.2) proporciona funcionalidad de compresión y descompresión usando zlib. El objeto del módulo se importa usando import zlib from 'zlib'.zlib.constantszlib.deflateRawSync()zlib.deflateSync()zlib.inflateRawSync()zlib.inflateSync()zlib.constantszlib.deflateRawSync(data[, options])data usando el algoritmo Deflate sin la cabecera zlib.zlib.deflateSync(data[, options])data usando el algoritmo Deflate.zlib.inflateRawSync(data[, options])data usando el algoritmo Deflate sin la cabecera zlib.zlib.inflateSync(data[, options])data usando el algoritmo Deflate.options es un objeto que puede contener las siguientes propiedades:levelzlib.constants.Z_DEFAULT_COMPRESSION).memLevelzlib.constants.Z_DEFAULT_MEMLEVEL).strategyzlib.constants.Z_DEFAULT_STRATEGY).windowBitszlib.constants.Z_DEFAULT_WINDOWBITS).dictionaryinfotrue, devuelve un objeto con buffer y engine.chunkSizezlib.constants.Z_DEFAULT_CHUNK).import zlib from 'zlib';
const deflated = zlib.deflateSync('Hello World!');
const inflated = zlib.inflateSync(deflated);
console.log(inflated.toString()); // 'Hello World!'