2015-09-21 15 views
5

numaralı bir fişle işledikten sonra, örn. content-typetext/plain ise body cevabının büyük halini döndürür? Diğer middlewares'lerde resp = next(conn, params)'u arayarak resp'u değiştirdiniz ama bunu fişte görmedim.Denetleyicinin yanıtını phoenix

cevap

9

register_before_send/2'u kullanan bir eklenti tanımlayabilir ve yanıtın content-type üstbilgisini kontrol edebilirsiniz (lütfen, Fişin üstbilgileri küçük harf olmasını beklediğini unutmayın). Saf bir uygulama (hayır hata denetimi) şöyle olacaktır:

defmodule Plug.UpperCaser do 
    @behaviour Plug 

    import Plug.Conn 

    def init(opts), do: opts 

    def call(conn, _opts) do 
    register_before_send(conn, fn(conn) -> 
     [content_type | _tail] = get_resp_header(conn, "content-type") 
     if String.contains?(content_type, "text/plain") do 
     resp(conn, conn.status, conn.resp_body |> to_string |> String.upcase) 
     else 
     conn 
     end 
    end) 
    end 
end 

resp/3

sonsuz bir döngüye neden olur send_resp/3 olarak kullanılır ve Sunucunuzu yeniden başlatmanız gerekir.