Просмотр исходного кода

Document trailers in the guide

Loïc Hoguin 7 лет назад
Родитель
Сommit
364a3527d4
1 измененных файлов с 29 добавлено и 1 удалено
  1. 29 1
      doc/src/guide/resp.asciidoc

+ 29 - 1
doc/src/guide/resp.asciidoc

@@ -128,7 +128,35 @@ in advance. This will ensure that the best response method
 is selected and help clients understand when the response
 is fully received.
 
-// @todo Document trailers here.
+Cowboy also provides a function to send response trailers.
+Response trailers are semantically equivalent to the headers
+you send in the response, only they are sent at the end.
+This is especially useful to attach information to the
+response that could not be generated until the response
+body was fully generated.
+
+Trailer fields must be listed in the trailer header. Any
+field not listed might be dropped by the client or an intermediary.
+
+[source,erlang]
+----
+Req = cowboy_req:stream_reply(200, #{
+    <<"content-type">> => <<"text/html">>,
+    <<"trailer">> => <<"expires, content-md5">>
+}, Req0),
+
+cowboy_req:stream_body("<html><head>Hello world!</head>", nofin, Req),
+cowboy_req:stream_body("<body><p>Hats off!</p></body></html>", nofin, Req),
+
+cowboy_req:stream_trailers(#{
+    <<"expires">> => <<"Sun, 10 Dec 2017 19:13:47 GMT">>,
+    <<"content-md5">> => <<"c6081d20ff41a42ce17048ed1c0345e2">>
+}, Req).
+----
+
+The stream ends with trailers. It is no longer possible to
+send data after sending trailers. You cannot send trailers
+after setting the `fin` flag when streaming the body.
 
 === Preset response headers