Trot.Router

Module for creating routes based on the URL path. Routes are specified using one of the HTTP method macros: get/2 post/2 put/2 patch/2 delete/2 options/2. The first argument is a the path to route to, and the second argument is the block of code to execute. See examples below.

Module attributes

@path_root: URL path to prefix to all routes in the module. Defaults to “/“.

@static_root: File path to use as the root when looking for static files. Defaults to “priv/static”.

Source

Summary

delete(path, options \\ [], list3)
do_redirect(path, conn)

Redirect the request to another location

extract_path_and_guards(path)

Extract the path and guards from the path

get(path, options \\ [], list3)
make_response(conn, conn)

Encodes HTTP responses as appropriate and passes them to Plug.Conn

options(path, options \\ [], list3)
patch(path, options \\ [], list3)
post(path, options \\ [], list3)
put(path, options \\ [], list3)
redirect(from, to)

Redirects all incoming requests for “from” to “to”. The value of “to” will be put into the Location response header

static(at)

Sets up a route for static to path at the @static_root, which defaults to “priv/static”

static(at, from)

Sets up a route to static assets. All requests beginning with “at” will look for a matching file under “from”. @static_root will be prepended to “from” and defaults to “priv/static”

Functions

do_redirect(path, conn)

Redirect the request to another location.

Source
extract_path_and_guards(path)

Extract the path and guards from the path.

Source
make_response(conn, conn)

Encodes HTTP responses as appropriate and passes them to Plug.Conn.

Examples

# Sets status code to 200 with an empty body
get "/" do
  200
end

# Returns an empty body with a status code of 404
get "/bad" do
  :bad_request
end

# Sets the status code to 200 with a text body
get "/text" do
  "Thank you for your question."
end

# Sets the status code to 201 with a text body
get "/text/body" do
  {201, "Thank you for your question."}
end

# Sets status code to 200 with a JSON-encoded body
get "/json" do
  %{"hyper" => "social"}
end

# Sets the status code to 201 with a JSON-encoded body
get "/json/code" do
  {201, %{"hyper" => "social"}}
end

# Set the response manually as when using Plug directly
get "/conn" do
  send_resp(conn, 200, "optimal tip-to-tip efficiency")
end

# Pattern match part of the path into a variable
get "/presenter/:name" do
  "The presenter is #{name}"
end

# Redirect the incoming request
get "/redirect" do
  {:redirect, "/text/body"}
end
Source

Macros

delete(path, options \\ [], list3)
Source
get(path, options \\ [], list3)
Source
options(path, options \\ [], list3)
Source
patch(path, options \\ [], list3)
Source
post(path, options \\ [], list3)
Source
put(path, options \\ [], list3)
Source
redirect(from, to)

Redirects all incoming requests for “from” to “to”. The value of “to” will be put into the Location response header.

Source
static(at)

Sets up a route for static to path at the @static_root, which defaults to “priv/static”.

Source
static(at, from)

Sets up a route to static assets. All requests beginning with “at” will look for a matching file under “from”. @static_root will be prepended to “from” and defaults to “priv/static”.

Examples

static "/js", "assets/js"

@static_root "priv/assets/static"
static "/css", "css"
Source