reqargs: Lire les arguments de requête application/x-www-form-urlencoded, multipart/form-data et application/json
Installation
Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.
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
Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.
Ce document décrit lua-resty-reqargs v1.4 publié le 07 janvier 2017.
Aide pour récupérer les arguments de requête application/x-www-form-urlencoded, multipart/form-data et application/json.
Synopsis
local get, post, files = require "resty.reqargs"()
if not get then
error(post)
end
-- Utilisez get, post et files...
API
Ce module n'a qu'une seule fonction, et cette fonction est chargée avec require :
local reqargs = require "resty.reqargs"
get, post, files regargs(options)
Lorsque vous appelez la fonction (reqargs), vous pouvez lui passer options. Ces options remplacent tout ce que vous avez pu définir dans votre configuration Nginx (ou les valeurs par défaut). Vous pouvez utiliser les options suivantes :
{
tmp_dir = "/tmp",
timeout = 1000,
chunk_size = 4096,
max_get_args = 100,
max_post_args = 100,
max_line_size = 512,
max_file_uploads = 10
}
Cette fonction renverra trois (3) valeurs de retour, qui sont appelées get, post et files. Ce sont des tables Lua contenant les données qui ont été (HTTP) demandées. get contient les arguments GET de la requête HTTP récupérés avec ngx.req.get_uri_args. post contient soit les arguments POST de la requête HTTP récupérés avec ngx.req.get_post_args, soit, dans le cas de application/json (en tant qu'en-tête de type de contenu pour la requête), il lira le corps de la requête et décodera le JSON, et le post contiendra alors la structure JSON décodée présentée sous forme de tables Lua. La dernière valeur de retour files contient tous les fichiers téléchargés. La valeur de retour files ne contiendra des données que lorsqu'il y a effectivement des fichiers téléchargés et que le type de contenu de la requête est défini sur multipart/form-data. files a la même structure que get et post pour les clés, mais les valeurs sont présentées sous forme de tables Lua, qui ressemblent à ceci (pensez à $_FILES de PHP) :
{
-- Le nom du champ de formulaire de téléchargement de fichier (identique à la clé)
name = "photo",
-- Le nom du fichier que l'utilisateur a sélectionné pour le téléchargement
file = "cat.jpg",
-- Le type MIME du fichier téléchargé
type = "image/jpeg"
-- La taille du fichier téléchargé (en octets)
size = 123465
-- L'emplacement où le fichier téléchargé a été diffusé
temp = "/tmp/????"
}
En cas d'erreur, cette fonction renverra nil, message d'erreur.
Variables de Configuration Nginx
Vous pouvez configurer plusieurs aspects de lua-resty-reqargs directement depuis la configuration Nginx, voici les valeurs de configuration que vous pouvez utiliser, et leurs valeurs par défaut :
## la valeur par défaut est le répertoire temporaire du système
set $reqargs_tmp_dir /tmp;
## voir https://github.com/openresty/lua-resty-upload
set $reqargs_timeout 1000;
## voir https://github.com/openresty/lua-resty-upload
set $reqargs_chunk_size 4096;
## voir https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args
set $reqargs_max_get_args 100;
## voir https://github.com/openresty/lua-nginx-module#ngxreqget_post_args
set $reqargs_max_post_args 100;
## voir https://github.com/openresty/lua-resty-upload
set $reqargs_max_line_size 512;
## la valeur par défaut est illimitée
set $reqargs_max_file_uploads 10;
Changements
Les changements de chaque version de ce module sont enregistrés dans le fichier Changes.md.
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-reqargs.