Skip to content

Commit

Permalink
fix: allow special characters to be matched in uri params (#150)
Browse files Browse the repository at this point in the history
  • Loading branch information
shreemaan-abhishek authored Nov 28, 2024
1 parent 262d798 commit c02b4e4
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
2 changes: 1 addition & 1 deletion lib/resty/radixtree.lua
Original file line number Diff line number Diff line change
Expand Up @@ -656,7 +656,7 @@ local function fetch_pat(path)
if first_byte == string.byte(":") then
table.insert(names, res[i]:sub(2))
-- See https://www.rfc-editor.org/rfc/rfc1738.txt BNF for specific URL schemes
res[i] = [=[([\w\-_;:@&=!',\%\$\.\+\*\(\)]+)]=]
res[i] = [=[([^\/]+)]=]

elseif first_byte == string.byte("*") then
local name = res[i]:sub(2)
Expand Down
29 changes: 29 additions & 0 deletions t/parameter.t
Original file line number Diff line number Diff line change
Expand Up @@ -473,3 +473,32 @@ GET /t
match meta: long
match meta: short
match meta: medium
=== TEST 14: special characters in parameter should match
--- config
location /t {
content_by_lua_block {
local json = require("toolkit.json")
local radix = require("resty.radixtree")
local rx = radix.new({
{
paths = {"/name/:name/id"},
metadata = "metadata /name",
},
})
local opts = {matched = {}}
local meta = rx:match("/name/json%20space/id", opts)
ngx.say("match meta: ", meta)
ngx.say("matched: ", json.encode(opts.matched))
}
}
--- request
GET /t
--- no_error_log
[error]
--- response_body
match meta: metadata /name
matched: {"_path":"/name/:name/id","name":"json%20space"}

0 comments on commit c02b4e4

Please sign in to comment.