= cowboy_req:stream_trailers(3)
== Name
cowboy_req:stream_trailers - Send the response trailers
== Description
[source,erlang]
----
stream_trailers(Trailers, Req :: cowboy_req:req()) -> ok
Trailers :: cowboy:http_headers()
----
Send the response trailers and terminate the stream.
This function can only be called once, after initiating
a response using
link:man:cowboy_req:stream_reply(3)[cowboy_req:stream_reply(3)]
and sending zero or more body chunks using
link:man:cowboy_req:stream_body(3)[cowboy_req:stream_body(3)]
with the `nofin` argument set. The function `stream_trailers/2`
implies `fin` and automatically terminate the response.
You must list all field names sent in trailers in the
trailer header, otherwise they might be dropped by intermediaries
or clients.
== Arguments
Trailers::
Trailer field values to be sent.
Req::
The Req object.
== Return value
The atom `ok` is always returned. It can be safely ignored.
== Changelog
* *2.2*: Function introduced.
== Examples
.Stream a response body with trailers
[source,erlang]
----
Req = cowboy_req:stream_reply(200, #{
<<"content-type">> => <<"text/plain">>,
<<"trailer">> => <<"expires, content-md5">>
}, Req0),
cowboy_req:stream_body(<<"Hello\n">>, nofin, Req),
timer:sleep(1000),
cowboy_req:stream_body(<<"World!\n">>, nofin, Req).
cowboy_req:stream_trailers(#{
<<"expires">> => <<"Sun, 10 Dec 2017 19:13:47 GMT">>,
<<"content-md5">> => <<"fbf68a8e34b2ded53bba54e68794b4fe">>
}, Req).
----
== See also
link:man:cowboy_req(3)[cowboy_req(3)],
link:man:cowboy_req:stream_reply(3)[cowboy_req:stream_reply(3)],
link:man:cowboy_req:stream_body(3)[cowboy_req:stream_body(3)]