Я использую elm-http-builder для обработки запросов, и у меня есть пара функций для добавления фильтров к данному запросу.
Эта функция предназначена для добавления новых QueryParameter к существующему URL-адресу запроса .
Пока я делал это так:
withQueryParam : ( String, String ) -> RequestBuilder a -> RequestBuilder a
withQueryParam ( paramKey, paramValue ) builder =
let
( url, params ) =
case String.split "?" builder.url of
[ path, qs ] ->
( path
, qs
|> String.split "&"
|> List.filterMap (tupleSplit "=")
|> List.map (\( key, value ) -> Url.Builder.string key value)
)
[ path ] ->
( path, [] )
_ ->
( "", [] )
queryString =
params
|> List.append [ Url.Builder.string paramKey paramValue ]
|> toQuery
|> String.replace "%20" "+"
in
{ builder | url = url ++ queryString }
tupleSplit : String -> String -> Maybe ( String, String )
tupleSplit sep string =
case String.split sep string of
[ key, value ] ->
Just ( key, value )
_ ->
Nothing
Но у меня такое ощущение, что я должен использовать Url.Parser.Query для этого.
Однако у меня нет списка параметров, которые я должен анализировать.
Знаете ли вы, как я могу улучшить свой код