2016-11-19 4 views
0

私はelixirで足を濡らしていましたが、MaruをRESTfulフレームワークとして使用することに決めました。私はdocsを訪れ、グーグルでグーグルではあったが、クエリパラメータを解析する方法に関するドキュメントや例は見つかりませんでした。Maruはパスパラメータのみをサポートしており、クエリパラメータはサポートしていませんか?

私は上記のURLを解析し、クエリのparams variable1variable2でマップを移入したいこの

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

ような何かをしたいです。丸はこの種の操作をサポートしていますか?

+0

これは 'params do ... end' _are_ query paramsで定義されているようです。 'route_param'はパスparamsを定義します。どのコードを試しましたが、うまくいきませんでしたか? – Dogbert

+0

'params do ... end'は、要求本体からparamsを取得することです。 – rockydgeekgod

+0

ああ、持っています。また、リクエストボディのparamsのように、さまざまなバリデーションをクエリパラメータで処理したいのですか、現在のconnからrawクエリのパラメータにアクセスしたいだけですか? – 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を得ることができます。

プラグはとてもうまく機能するので、もう一度やり直すべきではありません。

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 
関連する問題