aboutsummaryrefslogtreecommitdiffstats
path: root/doc/src/manual/cowboy_req.reply.asciidoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/manual/cowboy_req.reply.asciidoc')
-rw-r--r--doc/src/manual/cowboy_req.reply.asciidoc115
1 files changed, 115 insertions, 0 deletions
diff --git a/doc/src/manual/cowboy_req.reply.asciidoc b/doc/src/manual/cowboy_req.reply.asciidoc
new file mode 100644
index 0000000..35403f8
--- /dev/null
+++ b/doc/src/manual/cowboy_req.reply.asciidoc
@@ -0,0 +1,115 @@
+= cowboy_req:reply(3)
+
+== Name
+
+cowboy_req:reply - Send the response
+
+== Description
+
+[source,erlang]
+----
+reply(Status, Req :: cowboy_req:req())
+ -> reply(StatusCode, #{}, Req)
+
+reply(Status, Headers, Req :: cowboy_req:req())
+ -> Req
+
+reply(Status, Headers, Body, Req :: cowboy_req:req())
+ -> Req
+
+Status :: cowboy:http_status()
+Headers :: cowboy:http_headers()
+Body :: cowboy_req:resp_body()
+----
+
+Send the response.
+
+The header names must be given as lowercase binary strings.
+While header names are case insensitive, Cowboy requires them
+to be given as lowercase to function properly.
+
+Cowboy does not allow duplicate header names. Headers set
+by this function may overwrite those set by `set_resp_header/3`.
+
+Use link:man:cowboy_req:set_resp_cookie(3)[cowboy_req:set_resp_cookie(3)]
+instead of this function to set cookies.
+
+The `reply/2,3` functions will send the body set previously,
+if any. The `reply/4` function always sends the given body,
+overriding any previously set.
+
+You do not need to set the content-length header when
+sending a response body. Cowboy takes care of it automatically.
+You should however provide a content-type header.
+
+No further data can be transmitted after this function
+returns. This includes the push mechanism. Attempting to
+send two replies, or to push resources after a reply has
+been sent, will result in an error.
+
+== Arguments
+
+Status::
+
+The status code for the response.
+
+Headers::
+
+The response headers.
+
+Header names must be given as lowercase binary strings.
+
+Body::
+
+The body can be either a binary value, an iolist or a
+`sendfile` tuple telling Cowboy to send the contents of
+a file.
+
+Req::
+
+The Req object.
+
+== Return value
+
+A new Req object is returned.
+
+The returned Req object should be used from that point onward
+as it contains updated information about the state of the request.
+
+== Changelog
+
+* *2.0*: Only the Req is returned, it is no longer wrapped in a tuple.
+* *1.0*: Function introduced.
+
+== Examples
+
+.Reply
+[source,erlang]
+----
+Req = cowboy_req:reply(404, Req0).
+----
+
+.Reply with custom headers
+[source,erlang]
+----
+Req = cowboy_req:reply(401, #{
+ <<"www-authenticate">> => <<"Basic realm=\"erlang.org\"">>
+}, Req0).
+----
+
+.Reply with custom headers and a body
+[source,erlang]
+----
+Req = cowboy_req:reply(200, #{
+ <<"content-type">> => <<"text/plain">>
+}, "Hello world!", Req0).
+----
+
+== See also
+
+link:man:cowboy_req(3)[cowboy_req(3)],
+link:man:cowboy_req:set_resp_cookie(3)[cowboy_req:set_resp_cookie(3)],
+link:man:cowboy_req:set_resp_header(3)[cowboy_req:set_resp_header(3)],
+link:man:cowboy_req:set_resp_body(3)[cowboy_req:set_resp_body(3)],
+link:man:cowboy_req:stream_reply(3)[cowboy_req:stream_reply(3)],
+link:man:cowboy_req:push(3)[cowboy_req:push(3)]