2016-11-19 88 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 
相關問題