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.