用Elm解析片段内的查询字符串

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

对于reasons,我需要解析看起来格式化为查询字符串的东西(即key=value&another_key=another_value),但它位于URL的片段中,例如:

http://example.com/callback#id_token=my_long_jwt&state=some_state

如果#?,那么使用<?>会很容易,但我无法弄清楚当它在片段中时我是如何(或者如果)使用Url.Parser.Query的。


我可以把片段作为String

import Url.Parser as Parser
import Url.Parser exposing ((</>))

type Route = Callback String | NotFound

route : Parser.Parser (Route -> a) a
route = Parser.map Callback (Parser.s "callback" </> fragmentWithDefault )

fragmentWithDefault : Parser.Parser (String -> a) a
fragmentWithDefault = Parser.fragment <| Maybe.withDefault "no_fragment"

toRoute : Url.Url -> Route
toRoute url = Maybe.withDefault NotFound (Url.Parser.parse route url)

但是Url.Parser.Query中没有API运行Url.Parser.Query.Parser,我可以在String运行Callback

elm url-parsing
1个回答
4
投票

Url解析器只是将Url片段视为String,但您可以在解析之前将#替换为?

Maybe.withDefault url <| Url.fromString <| String.replace '#' '?' <| Url.toString url

那么你将在查询部分得到你的片段,这样你就可以正常解析它。

© www.soinside.com 2019 - 2024. All rights reserved.