2016-11-19 35 views
0

我让我的脚湿了elixir并决定使用Maru作为RESTful框架。我浏览了docs并搜索了一天,但找不到任何关于如何解析查询参数的文档或示例。玛鲁是否只支持路径参数而不是查询参数?

我想是这样的

http://localhost:8080/app/rest/system/users?variable1=value1&variable2=value2 

我要分析上面的网址,并填充地图的查询参数variable1variable2。玛鲁是否支持这种操作?

+0

它看起来像'params do ... end'中定义的东西_查询参数。 'route_param'定义路径参数。你尝试过哪些代码不起作用? – Dogbert

+0

'params do ... end'是从请求主体获得参数。 – rockydgeekgod

+0

啊,明白了。你是否也希望各种验证与查询参数一起使用,就像它们对请求体参数所做的一样,还是只想访问当前连接的原始查询参数? – Dogbert

回答

3

我找不到任何功能在丸的源代码要做到这一点,但由于丸内部使用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"]} 
0

在大多数时间,这段代码有很大的帮助,你可以得到所有pathurlbody 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