Pular para conteúdo

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.