由于某些原因,我需要解析看起来格式化为查询字符串(即key=value&another_key=another_value)但位于 URL 片段中的内容,例如:
http://example.com/callback#id_token=my_long_jwt&state=some_state
如果#是 a ?,那么使用它会很容易<?>,但我不知道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)
Run Code Online (Sandbox Code Playgroud)
但是没有可以Url.Parser.Query运行 a 的API Url.Parser.Query.Parser,我可以在其中运行Stringin Callback。
Url 解析器仅将 Url 片段视为 a String,但您可以在解析之前替换#为:?
Maybe.withDefault url <| Url.fromString <| String.replace '#' '?' <| Url.toString url
Run Code Online (Sandbox Code Playgroud)
然后你会在查询部分得到你的片段,这样你就可以正常解析它。
| 归档时间: |
|
| 查看次数: |
525 次 |
| 最近记录: |