http://hexdocs.pm/plug/
唯一真正的区别是增加了一名主管:
defmodule MyAPI.Supervisor do use Supervisor def start_link do Supervisor.start_link(__MODulE__,:ok) end def init(:ok) do children = [ Plug.Adapters.Cowboy.child_spec( :http,MyAPI.BasicServer,[],[ port: 80 ] ) ] supervise(children,strategy: :one_for_one) endend
这是插件本身:
defmodule MyAPI.BasicServer do import Plug.Conn import Process def init(options) do IO.puts("Log Init") options end def call(conn,_opts) do IO.puts("Log Response") conn |> put_resp_content_type("text/plain") |> send_resp(200,"Hello world") endend
当我使用IEx -S mix运行应用程序时,打开浏览器,然后点击localhost,IEx提示每次http请求的IO.puts’Log Response’两次…
是什么原因造成的?
解决方法 在本地测试后,我认为第一个请求是针对favicon.您可以看到,如果添加IO.inspect(conn.path_info) – 它将输出[“favicon.ico”].您可以轻松地在路径上添加匹配,如下所示:
def call(conn = %{path_info: []},_opts) do conn |> put_resp_content_type("text/plain") |> send_resp(200,"Hello world")enddef call(conn,_) do conn |> put_resp_content_type("text/plain") |> send_resp(404,"Not found")end
请注意,[]表示/ path.
总结以上是内存溢出为你收集整理的web-services – Elixir – Simple Plug示例在每个请求上点击两次调用方法全部内容,希望文章能够帮你解决web-services – Elixir – Simple Plug示例在每个请求上点击两次调用方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)