我让我的脚湿了elixir
并决定使用Maru作为RESTful框架。我浏览了docs并搜索了一天,但找不到任何关于如何解析查询参数的文档或示例。玛鲁是否只支持路径参数而不是查询参数?
我想是这样的
http://localhost:8080/app/rest/system/users?variable1=value1&variable2=value2
我要分析上面的网址,并填充地图的查询参数variable1
和variable2
。玛鲁是否支持这种操作?
我让我的脚湿了elixir
并决定使用Maru作为RESTful框架。我浏览了docs并搜索了一天,但找不到任何关于如何解析查询参数的文档或示例。玛鲁是否只支持路径参数而不是查询参数?
我想是这样的
http://localhost:8080/app/rest/system/users?variable1=value1&variable2=value2
我要分析上面的网址,并填充地图的查询参数variable1
和variable2
。玛鲁是否支持这种操作?
我找不到任何功能在丸的源代码要做到这一点,但由于丸内部使用plug
包,并允许自定义插件管道完全访问权限,可以在Plug.Conn.fetch_query_params
插头,然后访问使用conn.params
的PARAMS:
defmodule MyApp do
use Maru.Router
plug :fetch_query_params
get do
json(conn, conn.params)
end
end
$ curl 'http://127.0.0.1:8800/?foo=bar&baz\[\]=quux'
{"foo":"bar","baz":["quux"]}
在大多数时间,这段代码有很大的帮助,你可以得到所有path
url
和body
PARAMS。
Plug做得很好,所以我们不应该再做一次。
defmodule MyApp do
use Maru.Router
plug Plug.Parsers,
pass: ["*/*"],
json_decoder: Poison,
parsers: [:urlencoded, :json, :multipart]
get do
json(conn, conn.params)
end
end
它看起来像'params do ... end'中定义的东西_查询参数。 'route_param'定义路径参数。你尝试过哪些代码不起作用? – Dogbert
'params do ... end'是从请求主体获得参数。 – rockydgeekgod
啊,明白了。你是否也希望各种验证与查询参数一起使用,就像它们对请求体参数所做的一样,还是只想访问当前连接的原始查询参数? – Dogbert