queryのparse
-
付与されたタグ:
- Haskell
Haskellで低レベルなGETによるクエリのパースの処理について。
Network.HTTP.Types にある parseQuery か parseSimpleQuery を使う。この二つの違いは、例えば "?a=b&c"とあったときに parseQueryだと [("a", Just "b"),("c", Nothing)] となるが parseSimpleQuery だと [("a", "b"), ("c","")] となる。ちなちみに両方ともStringではなくてByteStringを受け取るのでpackするなり注意。
必要なパラメータだけ取り出す場合は Data.Map.fromList を使って Map に変換して扱うのががわかりやすいが(追記: Data.List.lookupを使うのもいいが)、同じパラメータ名が二つ以上あったときにどうするかというのがあるなあ…。