Список параметров haskell wreq

В отличном wreq В библиотеке Haskell легко добавить один или несколько параметров запроса в URL:

opts = defaults & param "key" .~ ["value"]

Однако я пытаюсь добавить список параметров одновременно:

params = [("key1", "value1"), ("key2", "value2"), ("key3", "value3")]

Я знаю что есть функция params но я не смог найти пример того, как его использовать.

1 ответ

Решение

И то и другое 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% верно, так как линзы позволяют делать разные вещи, но достаточно хороши для этого контекста.

Другие вопросы по тегам