gpt4 book ai didi

Elixir 将 header 字符串转换为映射

转载 作者:行者123 更新时间:2023-12-02 06:26:46 24 4
gpt4 key购买 nike

我有以下字符串,它是来自 http 请求的 WWW-Authenticate 的值:

"Digest realm=\"Web Service Realm via Digest Authentication\", qop=\"auth\", nonce=\"MTU3MjchuUVEIHEUnVNV==\""

我需要将其转换为 map ,以便我可以轻松引用领域和现时的值。我有一些非常脆弱的工作代码,例如提取领域:
    headers
|> String.split(",")
|> List.first()
|> String.split("=")
|> List.last()
|> String.replace("\"", "")

然而,这并不是很好,因为它依赖于列表中的第一个领域。转换这些数据的最佳方式是什么?

最佳答案

如果您有 :cowlib作为依赖项( :phoenix 依赖于它 :plug_cowboy => :cowboy => :cowlib ),它包括解析各种 header 的函数,包括“WWW-Authenticate”。

iex> www_authenticate = "Digest realm=\"Web Service Realm via Digest Authentication\", qop=\"auth\", nonce=\"MTU3MjchuUVEIHEUnVNV==\""
"Digest realm=\"Web Service Realm via Digest Authentication\", qop=\"auth\", nonce=\"MTU3MjchuUVEIHEUnVNV==\""
iex> [digest: params] = :cow_http_hd.parse_www_authenticate(www_authenticate)
[
digest: [
{"realm", "Web Service Realm via Digest Authentication"},
{"qop", "auth"},
{"nonce", "MTU3MjchuUVEIHEUnVNV=="}
]
]
iex> Map.new(params)
%{
"nonce" => "MTU3MjchuUVEIHEUnVNV==",
"qop" => "auth",
"realm" => "Web Service Realm via Digest Authentication"
}

关于 Elixir 将 header 字符串转换为映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58842115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com