У меня есть требование, когда я должен изменить и сохранить динамический URL-адрес входящего запроса и сохранить его в нашем бэкэнде.
Ниже приведен пример URL
GET /v1/merchants
С моим кодом Lua я меняю это на
GET_/v1/merchants
Все хорошо и именно то, что мне нужно. Но проблема возникает, когда я пытаюсь использовать динамический путь в URL-адресе.
Например: GET /v1/content/merchants/{string}
URL-адрес может быть GET /v1/content/merchants/foo
или GET /v1/content/merchants/bar
.
Я хочу сохранить указанный выше формат в бэкэнде, например GET /v1/content/merchants/string
, потому что я не могу хранить в бэкэнде GET_/v1/content/merchants/foo
или GET_/v1/content/merchants/bar
для каждого входящего запроса.
Ниже приведен код
local function get_method(request)
local method, path, query_fragment = request:match("^(.+) ([^%?]+)(%??.*) .+$")
if method and path then
return method .. "_" .. path
else
return nil
end
end
local function extract_usage(request)
local usage_t = {}
local ts_method = get_method(request)
if ts_method then
usage_t[ts_method] = set_or_inc(usage_t, ts_method, 1)
return build_querystring(usage_t)
else
return nil
end
end
{id}
? Любой символ, кроме/
в конце строки или только цифры? - person Wiktor Stribiżew   schedule 25.02.2016GET /v1/merchants
не соответствует шаблону^(.+) ([^%?]+)(%??.*) .+$
. Пожалуйста, опубликуйте воспроизводимый фрагмент кода и ожидаемый результат. - person Wiktor Stribiżew   schedule 25.02.2016get_method_updated
позаботится о том, чтобы вы не получили подчеркнутые части запроса в качестве возвращаемого значения. - person Wiktor Stribiżew   schedule 25.02.2016