gpt4 book ai didi

http - 在 Erlang 列表(eJabberd HTTP header )中按键查找特定元组

转载 作者:可可西里 更新时间:2023-11-01 16:49:43 26 4
gpt4 key购买 nike

我刚刚开始使用 eJabberd,正在编写一个具有 HTTP 访问权限的自定义模块。

我正在处理请求,但我现在正在尝试检索自定义 header ,这就是我遇到问题的地方。

我已经使用 Request 记录获取了 request_headers 列表,并且可以看到它包含我需要的所有 header (尽管出于某种原因,我想要的是键和值上的二进制字符串...... .) 如下:

[
{ 'Content-Length', <<"100">> },
{ <<"X-Custom-Header">>, <<"CustomValue">> },
{ 'Host', <<"127.0.0.1:5280">> },
{ 'Content-Type', <<"application/json">> },
{ 'User-Agent', <<"Fiddler">> }
]

这也是我第一次涉足函数式编程,所以从过程的角度来看,我会循环遍历列表并检查键是否是我正在寻找的键并返回值。

为此,我创建了一个函数:

find_header(HeaderKey, Headers) ->
lists:foreach(
fun(H) ->
if
H = {HeaderKey, Value} -> H;
true -> false
end
end,
Headers).

有了这个我得到了错误:

illegal guard expression

我什至不确定我是否以正确的方式处理这个问题,所以我正在寻找一些关于如何在 Erlang 中(以及可能在一般的函数式语言中)处理这种情况的建议。

在此先感谢您的帮助和建议!

半边天

最佳答案

您提到的列表称为“属性列表”,它是一个普通列表,包含元组形式的条目,其第一个元素是用于查找和插入的键或原子,用作元组的简写{原子,真实}。

要获取键的值,您可以执行以下操作:

proplists:get_value(Key,List).

例如获取内容长度:

7> List=[{'Content-Length',<<"100">>},
{<<"X-Custom-Header">>,<<"CustomValue">>},
{'Host',<<"127.0.0.1:5280">>},
{'Content-Type',<<"application/json">>},
{'User-Agent',<<"Fiddler">>}].

7> proplists:get_value('Content-Type',List).
<<"application/json">>

关于http - 在 Erlang 列表(eJabberd HTTP header )中按键查找特定元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34004454/

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