reqargs: Ler argumentos de requisição application/x-www-form-urlencoded, multipart/form-data e application/json
Instalação
Se você ainda não configurou a assinatura do repositório RPM, inscreva-se. Então você pode prosseguir com os seguintes passos.
CentOS/RHEL 7 ou 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 usar esta biblioteca Lua com NGINX, certifique-se de que o nginx-module-lua está instalado.
Este documento descreve lua-resty-reqargs v1.4 lançado em 07 de janeiro de 2017.
Helper para Recuperar Argumentos de Requisição application/x-www-form-urlencoded, multipart/form-data e application/json.
Sinopse
local get, post, files = require "resty.reqargs"()
if not get then
error(post)
end
-- Use get, post e files...
API
Este módulo possui apenas uma função, e essa função é carregada com require:
local reqargs = require "resty.reqargs"
get, post, files regargs(options)
Quando você chama a função (reqargs), pode passar options. Essas opções substituem qualquer definição que você tenha feito na configuração do Nginx (ou os padrões). Você pode usar as seguintes opções:
{
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 função retornará três (3) valores de retorno, que são chamados de get, post e files. Estes são tabelas Lua contendo os dados que foram solicitados (HTTP). get contém os argumentos de requisição GET do HTTP recuperados com ngx.req.get_uri_args. post contém os argumentos de requisição POST do HTTP recuperados com ngx.req.get_post_args, ou no caso de application/json (como um cabeçalho de tipo de conteúdo para a requisição), ele lerá o corpo da requisição e decodificará o JSON, e o post então conterá a estrutura JSON decodificada apresentada como tabelas Lua. O último valor de retorno files contém todos os arquivos enviados. O valor de retorno files só conterá dados quando realmente houver arquivos enviados e que o tipo de conteúdo da requisição esteja definido como multipart/form-data. files tem a mesma estrutura que get e post para as chaves, mas os valores são apresentados como tabelas Lua, que se parecem com isso (pense no $_FILES do PHP):
{
-- O nome do campo do formulário de upload de arquivo (igual à chave)
name = "photo",
-- O nome do arquivo que o usuário selecionou para o upload
file = "cat.jpg",
-- O tipo MIME do arquivo enviado
type = "image/jpeg"
-- O tamanho do arquivo enviado (em bytes)
size = 123465
-- O local onde o arquivo enviado foi transmitido
temp = "/tmp/????"
}
Em caso de erro, esta função retornará nil, mensagem de erro.
Variáveis de Configuração do Nginx
Você pode configurar vários aspectos do lua-resty-reqargs diretamente da configuração do Nginx, aqui estão os valores de configuração que você pode usar, e seus valores padrão:
## o padrão é o diretório temporário do sistema
set $reqargs_tmp_dir /tmp;
## veja https://github.com/openresty/lua-resty-upload
set $reqargs_timeout 1000;
## veja https://github.com/openresty/lua-resty-upload
set $reqargs_chunk_size 4096;
## veja https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args
set $reqargs_max_get_args 100;
## veja https://github.com/openresty/lua-nginx-module#ngxreqget_post_args
set $reqargs_max_post_args 100;
## veja https://github.com/openresty/lua-resty-upload
set $reqargs_max_line_size 512;
## o padrão é ilimitado
set $reqargs_max_file_uploads 10;
Mudanças
As mudanças de cada versão deste módulo são registradas no arquivo Changes.md.
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-reqargs.