ELM以字符串形式获取查询参数

问题描述 投票:0回答:1

基于this post,感谢@glennsl iam取得了一些进步。

首先,如果有人拥有我可以了解的解析链接,我将非常高兴。

page : Url.Url -> String
page url = 
  case (Parser.parse (Parser.query (Query.string "name")) url) of
    Nothing -> "My query string: " ++ (Maybe.withDefault "empty" url.query)
    Just v -> case v of
      Just v2 -> "Finnaly a name"
      Nothing -> "????"

到目前为止,我可以理解表达式Parser.parse (Parser.query (Query.string "name")) url返回一个Maybe (Maybe String),我认为这是因为解析器可以返回某些内容,如果它可以是字符串,是吗?

在我看来,如果我的网址中包含参数name,则将执行我的第一个Just,然后我就可以得到名称。

但是不管我在网址上放什么,它总是放在第一个Nothing

我得到的结果

enter image description here

functional-programming elm
1个回答
0
投票

问题是您没有解析URL的路径部分,这是Url.Parser主要用于的部分。您必须完全匹配路径。

这里是一个与您的URL匹配的解析器:

s "src" </> s "Main.elm" <?> (Query.string "name")

请注意,解析查询字符串是可选的,这也将与您的URL匹配:

s "src" </> s "Main.elm"

但是,只要包含查询参数解析器,它也必须匹配。

如果您只关心查询参数,则必须通过编写自己的函数或使用诸如qs之类的库来专门分析查询字符串,例如:

QS.parse
    QS.config
    "?a=1&b=x"

== Dict.fromList
    [ ( "a", One <| Number 1 )
    , ( "b", One <| Str "x" ) 
    ]
© www.soinside.com 2019 - 2024. All rights reserved.