如何在Erlang中获取URL?

4

根据URL查询字符串参数,我希望在网页上显示不同的字符串。

例如,如果URL是localhost:8080?x=a,则网页将显示“Hello”,而当URL为localhost:8080?x=b时,则网页将显示“Bye”。

我面临的问题是如何获取查询参数。

1个回答

2

首先,您可以使用http_uri:parse/1解析URI。

{ok, Result} = http_uri:parse("http://localhost:8080?x=a"),
{Scheme, UserInfo, Host, Port, Path, Query} = Result,

它捕获查询字符串并将其存储在Query变量中。

然后,获取URI查询字符串中x参数的值的简单方法是使用模式匹配。

"?x=" ++ Param = Query,

请注意,如果查询字符串中存在其他键,则此匹配可能会失败,因为它只期望具有一个键的查询字符串,该键必须是x
现在您可以使用case表达式查找Param变量中的内容并根据其采取行动。
case Param of
   "a" -> "Hello";
   "b" -> "Bye"
end

@SunnyJain,有什么疑问吗? - Hamidreza Soleimani
谢谢您的回答,但我该如何获取URL以作为http_uri:parse/1中的参数传递? - Sunny Jain
@SunnyJain 你正在使用哪个HTTP框架?你已经尝试了什么? - Hamidreza Soleimani
我刚开始使用Erlang,我只想创建一个基本的服务器来处理上述功能。我正在使用以下命令创建服务器:{ok, Pid} = inets:start(httpd, [{port, 0}, {server_name,"httpd_test"}, {server_root,"/tmp"}, {document_root,"/tmp/htdocs"}, {bind_address, "localhost"}]).这个命令我从这个链接中读取。 - Sunny Jain
@SunnyJain 我建议你使用这个线程,如果你无法理解,请提出关于此问题的详细问题。 - Hamidreza Soleimani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接