Elli与Elixir基本用法问题

Alp*_*rra 5 elixir

我在Elixir应用程序中使用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
Run Code Online (Sandbox Code Playgroud)

这就是我执行的方式

{:ok,pid}=:elli.start_link [callback: Client.TestHttp, port: 2020]
Run Code Online (Sandbox Code Playgroud)

Gaz*_*ler 5

似乎您尚未完全转换示例中的Erlang代码,并且仍在使用以大写字母开头的变量。

将句柄更改为:

  def handle(req, args) do
    handle(:elli_request.method(req), :elli_request.path(req), args)
  end
Run Code Online (Sandbox Code Playgroud)

注意变量名称的不同。在Elixir中,变量是用编写的snake_case,模块是中的CamelCase。在匹配中使用和下划线(__var表示变量未使用。

您的代码实际上是扩大ReqArgs对由于药剂是原子的模块名称的原子:

Req == :'Elixir.Req' # true
Run Code Online (Sandbox Code Playgroud)