我讓我的腳溼了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