module ActionController::Responders

Direct including types

Defined in:

action-controller/responders.cr

Constant Summary

MIME_TYPES = {binary: "application/octet-stream", json: "application/json", xml: "application/xml", text: "text/plain", html: "text/html", yaml: "text/yaml"}

common response mime types

REDIRECTION_CODES = {multiple_choices: 300, moved_permanently: 301, found: 302, see_other: 303, not_modified: 304, use_proxy: 305, temporary_redirect: 307, permanent_redirect: 308}

codes to use when redirecting

STATUS_CODES = {continue: 100, switching_protocols: 101, processing: 102, ok: 200, created: 201, accepted: 202, non_authoritative_information: 203, no_content: 204, reset_content: 205, partial_content: 206, multi_status: 207, already_reported: 208, im_used: 226, bad_request: 400, unauthorized: 401, payment_required: 402, forbidden: 403, not_found: 404, method_not_allowed: 405, not_acceptable: 406, proxy_authentication_required: 407, request_timeout: 408, conflict: 409, gone: 410, length_required: 411, precondition_failed: 412, payload_too_large: 413, uri_too_long: 414, unsupported_media_type: 415, range_not_satisfiable: 416, expectation_failed: 417, misdirected_request: 421, unprocessable_entity: 422, locked: 423, failed_dependency: 424, upgrade_required: 426, precondition_required: 428, too_many_requests: 429, request_header_fields_too_large: 431, unavailable_for_legal_reasons: 451, internal_server_error: 500, not_implemented: 501, bad_gateway: 502, service_unavailable: 503, gateway_timeout: 504, http_version_not_supported: 505, variant_also_negotiates: 506, insufficient_storage: 507, loop_detected: 508, not_extended: 510, network_authentication_required: 511}

standard response codes

Macro Summary

Instance Method Summary

Macro Detail

macro head(status) #

only sends the header, no content to be sent.

you should only use render with the Macro DSL

delete "/:id", :destroy do
  MyModel.find(route_params["id"]).destroy
  head HTTP::Status::ACCEPTED
end

[View source]
macro redirect_to(path, status = :found) #

redirects the browser to a new route

you should only use render with the Macro DSL

patch "/:id", :update do
  redirect_to "/#{params["id"]}"
end

[View source]
macro render(status = :ok, head = nil, json = nil, yaml = nil, xml = nil, html = nil, text = nil, binary = nil, template = nil, partial = nil, layout = nil) #

used to stream a response back to the user, serializing directly to the IO

the content type is set appropriately based on the response type

a call to render implicitly executes a return as the response has been written to the client

you should only use render with the Macro DSL

get "/:id", :show do
  render json: MyModel.find(route_params["id"])
end

[View source]
macro respond_with(status = :ok, &block) #

uses the content-type header to respond in the appropriate format

you should only use render with the Macro DSL

get "/:id", :show do
  model = MyModel.find(route_params["id"])

  respond_with do
    text model # calls to_s(response) on the object passed
    json model # calls to_json(response) on the object passed
    xml do     # can provide a block to perform additional processing too
      str = "<set_var>#{model.build_xml}</set_var>"
      XML.parse(str)
    end
  end
end

[View source]

Instance Method Detail

def accepts_formats : Array(String) #

Extracts the mime types from the Accept header


[View source]