diff --git a/phoenix-conn.md b/phoenix-conn.md index 241cadcfb..b8dfb492b 100644 --- a/phoenix-conn.md +++ b/phoenix-conn.md @@ -1,42 +1,55 @@ --- title: "Phoenix: Plug.Conn" category: Elixir +layout: 2017/sheet +updated: 201708.29 +weight: -5 --- Request ------- +### Request +{: .-prime} + +```elixir +conn.host #=> "example.com" +conn.method #=> "GET" +conn.path_info #=> ["posts", "1"] +conn.request_path #=> "/posts/1" +conn.query_string #=> "utm_source=twitter" +conn.port #=> 80 +conn.scheme #=> :http +conn.peer #=> { {127, 0, 0, 1}, 12345 } +conn.remote_ip #=> { 151, 236, 219, 228 } +conn.req_headers #=> [{"content-type", "text/plain"}] +``` + ```elixir -conn.host #=> "example.com" -conn.method #=> "GET" -conn.path_info #=> ["posts", "1"] -conn.request_path #=> "/posts/1" -conn.query_string #=> "utm_source=twitter" -conn.port #=> 80 -conn.scheme #=> :http -conn.peer #=> { {127, 0, 0, 1}, 12345 } -conn.remote_ip #=> { 151, 236, 219, 228 } -conn.req_headers #=> [{"content-type", "text/plain"}] conn |> get_req_header("referrer") ``` -### Updating -Usually only useful for tests. +### Updating conn ```elixir conn |> put_req_header("accept", "application/json") ``` +Usually only useful for tests. + Response -------- +### Response +{: .-prime} + ```elixir -conn.resp_body #=> "..." -conn.resp_charset #=> "utf-8" -conn.resp_cookies #=> ... -conn.resp_headers #=> ... -conn.status #=> ... +conn.resp_body #=> "..." +conn.resp_charset #=> "utf-8" +conn.resp_cookies #=> ... +conn.resp_headers #=> ... +conn.status #=> ... ``` ### Sending responses @@ -47,19 +60,27 @@ conn |> html("...") |> json(%{ message: "Hello" }) |> text("Hello") +``` +```elixir |> redirect(to: "/foo") |> redirect(external: "http://www.google.com/") |> halt() +``` +```elixir |> put_resp_content_type("text/plain") |> put_resp_cookie("abc", "def") |> put_resp_header("X-Delivered-By", "myapp") |> put_status(202) |> put_status(:not_found) +``` +```elixir |> put_private(:plug_foo, "...") # reserved for libraries +``` +```elixir |> send_resp(201, "") ``` @@ -71,14 +92,18 @@ conn |> render("index.html") |> render("index.html", hello: "world") |> render(MyApp.ErrorView, "404.html") +``` +```elixir |> put_layout(:foo) |> put_layout(false) |> put_view(ErrorView) |> put_secure_browser_headers() # prevent clickjacking, nosniff, and xss protection # x-frame-options, x-content-type-options, x-xss-protection +``` +```elixir |> put_new_view(ErrorView) # if not set yet |> put_new_layout(:foo) ``` @@ -87,8 +112,21 @@ conn layout(conn) ``` -Accepts -------- +Other features +-------------- + +### Other fields +{: .-prime} + +```elixir +conn.assigns # storage of crap +conn.owner # process +conn.halted # if pipeline was halted +conn.secret_key_base # ... +conn.state # :unset, :set, :file, :sent, :chunked +``` + +### Accepts ```js plug :accepts, ["html", "json"] @@ -97,17 +135,7 @@ get_format(conn) #=> "html" conn.accepts ``` -## Misc - -```elixir -conn.assigns # storage of crap -conn.owner # process -conn.halted # if pipeline was halted -conn.secret_key_base # ... -conn.state # :unset, :set, :file, :sent, :chunked -``` - -## Assigns +### Assigns ```elixir conn.assigns[:hello] @@ -119,7 +147,7 @@ conn = async_assign(conn, :location, fn -> geoip_lookup() end) await_assign(conn, :location) ``` -## Session +### Session ```elixir conn = fetch_session(conn) # or plug :fetch_session @@ -129,13 +157,11 @@ get_session(conn, :message) conn = clear_session(conn) ``` -Also: `flash` `cookie` `params` - ```elixir conn |> put_flash(:info, "Success") |> put_flash(:error, "Oh no") ``` -```elixir -``` +Also available: `flash` `cookie` `params` + diff --git a/phoenix-ecto@1.3.md b/phoenix-ecto@1.3.md index 0a845d0a6..eb844989b 100644 --- a/phoenix-ecto@1.3.md +++ b/phoenix-ecto@1.3.md @@ -2,4 +2,5 @@ title: "Phoenix: Ecto models" category: Elixir redirect_to: /phoenix-ecto +deprecated: true ---