基于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
我得到的结果
问题是您没有解析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" )
]