reqargs: Leer argumentos de solicitud application/x-www-form-urlencoded, multipart/form-data y application/json
Instalación
Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.
CentOS/RHEL 7 o Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-reqargs
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-reqargs
Para utilizar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.
Este documento describe lua-resty-reqargs v1.4 lanzado el 07 de enero de 2017.
Ayudante para recuperar argumentos de solicitud application/x-www-form-urlencoded, multipart/form-data y application/json.
Sinopsis
local get, post, files = require "resty.reqargs"()
if not get then
error(post)
end
-- Usar get, post y files...
API
Este módulo tiene solo una función, y esa función se carga con require:
local reqargs = require "resty.reqargs"
get, post, files regargs(options)
Cuando llamas a la función (reqargs) puedes pasarle options. Estas opciones anulan cualquier cosa que hayas definido en tu configuración de Nginx (o los valores predeterminados). Puedes usar las siguientes opciones:
{
tmp_dir = "/tmp",
timeout = 1000,
chunk_size = 4096,
max_get_args = 100,
max_post_args = 100,
max_line_size = 512,
max_file_uploads = 10
}
Esta función devolverá tres (3) valores de retorno, que se llaman get, post y files. Estas son tablas Lua que contienen los datos que fueron solicitados (HTTP). get contiene los argumentos de solicitud GET de HTTP recuperados con ngx.req.get_uri_args. post contiene ya sea los argumentos de solicitud POST de HTTP recuperados con ngx.req.get_post_args, o en caso de application/json (como un encabezado de tipo de contenido para la solicitud), leerá el cuerpo de la solicitud y decodificará el JSON, y el post contendrá la estructura JSON decodificada presentada como tablas Lua. El último valor de retorno files contiene todos los archivos subidos. El valor de retorno files solo contendrá datos cuando realmente haya archivos subidos y que el tipo de contenido de la solicitud esté configurado como multipart/form-data. files tiene la misma estructura que get y post para las claves, pero los valores se presentan como tablas Lua, que se ven así (piensa en $_FILES de PHP):
{
-- El nombre del campo de formulario de carga de archivos (igual que la clave)
name = "photo",
-- El nombre del archivo que el usuario seleccionó para la carga
file = "cat.jpg",
-- El tipo MIME del archivo subido
type = "image/jpeg"
-- El tamaño del archivo subido (en bytes)
size = 123465
-- La ubicación donde se transmitió el archivo subido
temp = "/tmp/????"
}
En caso de error, esta función devolverá nil, mensaje de error.
Variables de Configuración de Nginx
Puedes configurar varios aspectos de lua-resty-reqargs directamente desde la configuración de Nginx, aquí están los valores de configuración que puedes usar, y sus valores predeterminados:
## el valor predeterminado es el directorio temporal del sistema
set $reqargs_tmp_dir /tmp;
## ver https://github.com/openresty/lua-resty-upload
set $reqargs_timeout 1000;
## ver https://github.com/openresty/lua-resty-upload
set $reqargs_chunk_size 4096;
## ver https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args
set $reqargs_max_get_args 100;
## ver https://github.com/openresty/lua-nginx-module#ngxreqget_post_args
set $reqargs_max_post_args 100;
## ver https://github.com/openresty/lua-resty-upload
set $reqargs_max_line_size 512;
## el valor predeterminado es ilimitado
set $reqargs_max_file_uploads 10;
Cambios
Los cambios de cada versión de este módulo se registran en el archivo Changes.md.
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-reqargs.