我正在我的应用程序中使用elli https://github.com/knutin/elli。
下面提供了示例代码。这是相当基本的,每次运行时,我只得到“内部服务器错误”。我不知道我做错了什么。有谁能帮忙吗?
defmodule Client.TestHttp do
@behaviour :elli_handler
def handle(_Req,_Args) do
handle(:elli_request.method(Req), :elli_request.path(Req),Args)
end
def handle_event(_,_,_)do
:ok
end
def handle(:GET,[],_)do
{:ok, [], "OkGet"}
end
end我就是这样执行的
{:ok,pid}=:elli.start_link [callback: Client.TestHttp, port: 2020]发布于 2015-10-21 15:04:52
看起来,您还没有从示例中完全翻译Erlang代码,并且仍然使用以大写字母开头的变量。
将句柄更改为:
def handle(req, args) do
handle(:elli_request.method(req), :elli_request.path(req), args)
end注意变量名称的差异。在Elixir中,变量用snake_case编写,模块用CamelCase编写。在匹配中使用和下划线(_) (如_var )表示变量未使用。
您的代码实际上是将Req和Args扩展到原子,因为在Elixir中的模块名是原子:
Req == :'Elixir.Req' # true发布于 2015-10-21 15:58:57
除了@Gazier的回答(当然,这是正确的)之外,您的代码在另一种情况下看起来也是错误的。在你最初的消息来源中:
def handle(_Req,_Args) do
handle(:elli_request.method(Req), :elli_request.path(Req),Args)
end调用:elli_request.method的参数需要是_Req,而:elli_request.path的参数也需要是_Req和_Args。如果以大写字母开头的变量是正确的(它们不是),则如下所示:
def handle(_Req,_Args) do
handle(:elli_request.method(_Req), :elli_request.path(_Req),_Args)
end但正如加尼埃指出的那样,你的变量无论如何都没有正确的大小写。
https://stackoverflow.com/questions/33262679
复制相似问题