代码之家  ›  专栏  ›  技术社区  ›  davetapley

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

elm
  •  0
  • davetapley  · 技术社区  · 6 年前

    为了 reasons key=value&another_key=another_value

    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)
    

    但是没有API Url.Parser.Query 它运行一个 Url.Parser.Query.Parser 我可以和它对抗 在里面 Callback .

    0 回复  |  直到 6 年前
        1
  •  4
  •   Karol Samborski    6 年前

    Url解析器只是将Url片段作为 String 但你可以取代 # 具有 ? 解析前:

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

    然后您将在查询部分获得片段,以便可以正常解析它。

    推荐文章