2015-09-21 21 views

Trả lời

9

Bạn có thể xác định một phích cắm sử dụng register_before_send/2 và kiểm tra tiêu đề content-type của phản hồi (xin lưu ý rằng Plugin cho rằng tiêu đề là chữ thường). Một thực hiện ngây thơ (không kiểm tra lỗi) sẽ là:

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 được sử dụng như send_resp/3 sẽ gây ra một vòng lặp vô hạn và bạn sẽ phải khởi động lại máy chủ của bạn.

Các vấn đề liên quan