在优秀的wreq
Haskell 库中,很容易将一个或多个查询参数添加到 URL:
opts = defaults & param "key" .~ ["value"]
但是我正在努力做的是一次添加一个参数列表:
params = [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]
我知道有功能params
,但我找不到任何关于如何使用它的例子。
param <key>
和都是params
镜头:
param :: Text -> Lens' Options [Text]
params :: Lens' Options [(Text, Text)]
无需过多介绍细节,您可以将镜头想象为聚焦某些东西,例如param "foo"
聚焦在[Text]
属于Options
参数foo
(*) 的某些部分。然后,您可以使用正确的功能更改/查询/操作这些值(请参阅镜头包)。
您已经习惯(.~)
了替换当前值,您可以再次使用它params
:
default & params .~ [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]
(.~)
在这种情况下,您可以将其视为
(.~) :: Lens' a b -> b -> a -> a
-- concrete:
(.~) :: Lens' Options [(Text, Text)] -> [(Text, Text)] -> Options -> Options
(*) 这不是 100% 正确的,因为镜头可以让你做各种各样的事情,但对于这种情况来说已经足够了。