Создать URL с параметрами условного запроса - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть простой конструктор URL, например:

prepareUrl : Params -> String
prepareUrl params = 
   Url.crossOrigin "http://someapi.com/"
    ["posts"]
    [ 
    , Url.string "currency" params.currency
    , Url.string "members[0][birthday]" "12.12.1989"
    ]

Когда я получаю param, например membersCount 2 или 3 и т. Д., Мне нужно "клонировать" members [] в запросе, например так:

params.membersCount = 3

prepareUrl : Params -> String
    prepareUrl params = 
       Url.crossOrigin "http://someapi.com/"
        ["posts"]
        [ 
        , Url.string "currency" params.currency
        , Url.string "members[0][birthday]" "12.12.1989"
        , Url.string "members[1][birthday]" "12.12.1989"
        , Url.string "members[2][birthday]" "12.12.1989"
        ]

Сама строка даты может оставаться неизменной, это не имеет значения.Как я могу это сделать?

1 Ответ

0 голосов
/ 12 декабря 2018

Поскольку третий параметр Url.Builder.crossOrigin принимает список значений QueryParameter, вы можете построить список от 0 до memberCount, используя List.range:

prepareUrl : Params -> String
prepareUrl params = 
   Url.crossOrigin "http://someapi.com/"
    ["posts"]
    (Url.string "currency" params.currency :: birthdayParams params.memberCount)

birthdayParams : Int -> List Url.QueryParameter
birthdayParams memberCount =
    List.range 0 (memberCount - 1)
        |> List.map (\i -> Url.string ("members[" ++ String.fromInt i ++ "][birthday]") "12.12.1989")
...