为了 reasons key=value&another_key=another_value
key=value&another_key=another_value
http://example.com/callback#id_token=my_long_jwt&state=some_state
如果 # 是一个 ? ,这样就很容易使用了 <?> ,但我不知道如何使用 Url.Parser.Query
#
?
<?>
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)
但是没有API Url.Parser.Query 它运行一个 Url.Parser.Query.Parser 我可以和它对抗 在里面 Callback .
Url.Parser.Query.Parser
Callback
Url解析器只是将Url片段作为 String 但你可以取代 # 具有 ? 解析前:
Maybe.withDefault url <| Url.fromString <| String.replace '#' '?' <| Url.toString url
然后您将在查询部分获得片段,以便可以正常解析它。