2015-04-13 14 views
5

iki kez çağrı yöntemini vururİksir Basit Tak örneği Aşağıdaki kod büyük ölçüde buradan örnek dayanmaktadır her istek

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") 
    end 
end 
: Burada
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) 
    end 
end 

fiş kendisidir Ben IEX -S karışımı uygulamayı çalıştırdığınızda 10, daha sonra localhost, IEX istemi IO.puts 'Giriş Tepki' iki kez her http isteği için ...

Ne Var nedenleri vurmak, bir tarayıcı açın o?

cevap

5

Yerel olarak sınandıktan sonra ilk isteğin bir favicon için olduğunu düşünüyorum. IO.inspect(conn.path_info) eklerseniz, ["favicon.ico"] çıkışını görebilirsiniz.

Kolayca şöyle yolunda eşleştirme ekleyebilirsiniz:

def call(conn = %{path_info: []}, _opts) do 
    conn 
    |> put_resp_content_type("text/plain") 
    |> send_resp(200, "Hello world") 
end 

def call(conn, _) do 
    conn 
    |> put_resp_content_type("text/plain") 
    |> send_resp(404, "Not found") 
end 

Not []/ yolunu temsil ettiğini.