Zum Inhalt

reqargs: Lese application/x-www-form-urlencoded, multipart/form-data und application/json Anforderungsargumente

Installation

Wenn Sie das RPM-Repository-Abonnement nicht eingerichtet haben, melden Sie sich an. Dann können Sie mit den folgenden Schritten fortfahren.

CentOS/RHEL 7 oder 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

Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.

Dieses Dokument beschreibt lua-resty-reqargs v1.4, veröffentlicht am 07. Januar 2017.


Hilfsprogramm zum Abrufen von application/x-www-form-urlencoded, multipart/form-data und application/json Anforderungsargumenten.

Synopsis

local get, post, files = require "resty.reqargs"()
if not get then
    error(post)
end
-- Verwenden Sie get, post und files...

API

Dieses Modul hat nur eine Funktion, und diese Funktion wird mit require geladen:

local reqargs = require "resty.reqargs"

get, post, files regargs(options)

Wenn Sie die Funktion (reqargs) aufrufen, können Sie options übergeben. Diese Optionen überschreiben alles, was Sie möglicherweise in Ihrer Nginx-Konfiguration (oder den Standardwerten) definiert haben. Sie können die folgenden Optionen verwenden:

{
    tmp_dir          = "/tmp",
    timeout          = 1000,
    chunk_size       = 4096,
    max_get_args     = 100,
    max_post_args    = 100,
    max_line_size    = 512,
    max_file_uploads = 10
}

Diese Funktion gibt drei (3) Rückgabewerte zurück, die get, post und files genannt werden. Dies sind Lua-Tabellen, die die angeforderten Daten (HTTP) enthalten. get enthält die HTTP-Anforderungs-GET-Argumente, die mit ngx.req.get_uri_args abgerufen wurden. post enthält entweder die HTTP-Anforderungs-POST-Argumente, die mit ngx.req.get_post_args abgerufen wurden, oder im Falle von application/json (als Content-Type-Header für die Anfrage) wird der Anfragekörper gelesen und das JSON decodiert, und post enthält dann die decodierte JSON-Struktur, die als Lua-Tabellen dargestellt wird. Der letzte Rückgabewert files enthält alle hochgeladenen Dateien. Der Rückgabewert files enthält nur Daten, wenn tatsächlich Dateien hochgeladen wurden und der Content-Type der Anfrage auf multipart/form-data gesetzt ist. files hat die gleiche Struktur wie get und post für die Schlüssel, aber die Werte werden als Lua-Tabellen dargestellt, die so aussehen (denken Sie an PHPs $_FILES):

{
    -- Der Name des Datei-Upload-Formularfelds (gleich dem Schlüssel)
    name = "photo",
    -- Der Name der Datei, die der Benutzer für den Upload ausgewählt hat
    file = "cat.jpg",
    -- Der MIME-Typ der hochgeladenen Datei
    type = "image/jpeg",
    -- Die Dateigröße der hochgeladenen Datei (in Bytes)
    size = 123465,
    -- Der Ort, an dem die hochgeladene Datei gestreamt wurde
    temp = "/tmp/????"
}

Im Falle eines Fehlers gibt diese Funktion nil, Fehlermeldung zurück.

Nginx-Konfigurationsvariablen

Sie können mehrere Aspekte von lua-resty-reqargs direkt aus der Nginx-Konfiguration konfigurieren. Hier sind die Konfigurationswerte, die Sie verwenden können, sowie ihre Standardwerte:

## der Standardwert ist das System-Temp-Verzeichnis
set $reqargs_tmp_dir           /tmp;
## siehe https://github.com/openresty/lua-resty-upload
set $reqargs_timeout           1000;
## siehe https://github.com/openresty/lua-resty-upload
set $reqargs_chunk_size        4096;
## siehe https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args
set $reqargs_max_get_args      100;
## siehe https://github.com/openresty/lua-nginx-module#ngxreqget_post_args
set $reqargs_max_post_args     100;
## siehe https://github.com/openresty/lua-resty-upload
set $reqargs_max_line_size     512;  
## der Standardwert ist unbegrenzt
set $reqargs_max_file_uploads  10;

Änderungen

Die Änderungen jeder Version dieses Moduls sind in der Datei Changes.md dokumentiert.

GitHub

Zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul finden Sie im GitHub-Repository für nginx-module-reqargs.