Перейти к содержанию

reqargs: Чтение аргументов запроса application/x-www-form-urlencoded, multipart/form-data и application/json

Установка

Если вы еще не настроили подписку на репозиторий RPM, зарегистрируйтесь. Затем вы можете продолжить с выполнением следующих шагов.

CentOS/RHEL 7 или 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

Чтобы использовать эту библиотеку Lua с NGINX, убедитесь, что nginx-module-lua установлен.

Этот документ описывает lua-resty-reqargs v1.4, выпущенную 7 января 2017 года.


Помощник для получения аргументов запроса application/x-www-form-urlencoded, multipart/form-data и application/json.

Синопсис

local get, post, files = require "resty.reqargs"()
if not get then
    error(post)
end
-- Используйте get, post и files...

API

Этот модуль имеет только одну функцию, и эта функция загружается с помощью require:

local reqargs = require "resty.reqargs"

get, post, files regargs(options)

Когда вы вызываете функцию (reqargs), вы можете передать ей options. Эти опции переопределяют все, что вы могли определить в вашей конфигурации Nginx (или значения по умолчанию). Вы можете использовать следующие опции:

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

Эта функция вернет три (3) значения, которые называются get, post и files. Это таблицы Lua, содержащие данные, которые были (HTTP) запрошены. get содержит аргументы GET HTTP-запроса, полученные с помощью ngx.req.get_uri_args. post содержит либо аргументы POST HTTP-запроса, полученные с помощью ngx.req.get_post_args, либо в случае application/json (как заголовок типа контента для запроса) он прочитает тело запроса и декодирует JSON, и тогда post будет содержать декодированную структуру JSON, представленную в виде таблиц Lua. Последнее возвращаемое значение files содержит все загруженные файлы. Значение files будет содержать данные только в том случае, если файлы действительно были загружены и тип контента запроса установлен на multipart/form-data. files имеет такую же структуру, как и get и post для ключей, но значения представлены в виде таблиц Lua, которые выглядят так (подумайте о $_FILES в PHP):

{
    -- Имя поля формы загрузки файла (такое же, как ключ)
    name = "photo",
    -- Имя файла, который пользователь выбрал для загрузки
    file = "cat.jpg",
    -- MIME-тип загруженного файла
    type = "image/jpeg",
    -- Размер загруженного файла (в байтах)
    size = 123465,
    -- Место, куда был передан загруженный файл
    temp = "/tmp/????"
}

В случае ошибки эта функция вернет nil, сообщение об ошибке.

Переменные конфигурации Nginx

Вы можете настроить несколько аспектов lua-resty-reqargs непосредственно из конфигурации Nginx, вот значения конфигурации, которые вы можете использовать, и их значения по умолчанию:

## по умолчанию это временная директория системы
set $reqargs_tmp_dir           /tmp;
## см. https://github.com/openresty/lua-resty-upload
set $reqargs_timeout           1000;
## см. https://github.com/openresty/lua-resty-upload
set $reqargs_chunk_size        4096;
## см. https://github.com/openresty/lua-nginx-module#ngxreqget_uri_args
set $reqargs_max_get_args      100;
## см. https://github.com/openresty/lua-nginx-module#ngxreqget_post_args
set $reqargs_max_post_args     100;
## см. https://github.com/openresty/lua-resty-upload
set $reqargs_max_line_size     512;
## по умолчанию неограничено
set $reqargs_max_file_uploads  10;

Изменения

Изменения каждой версии этого модуля записываются в файле Changes.md.

GitHub

Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-reqargs.