From 04247240629f1b9807feca34fde6de89286d4774 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Sun, 25 Sep 2016 17:32:41 +0200 Subject: Update manual for the cowboy module This commit separates the documentation of the functions into separate manual pages, with at least one example per function and a lot more details about parameters, return values and related functions and modules. It also includes a changelog indicating when the function was added or changed. The inspiration for this comes mainly from the PHP documentation and feedback from users. --- doc/src/manual/cowboy.asciidoc | 111 ++++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 50 deletions(-) (limited to 'doc/src/manual/cowboy.asciidoc') diff --git a/doc/src/manual/cowboy.asciidoc b/doc/src/manual/cowboy.asciidoc index 10e3696..6aad091 100644 --- a/doc/src/manual/cowboy.asciidoc +++ b/doc/src/manual/cowboy.asciidoc @@ -9,80 +9,91 @@ cowboy - HTTP server The `cowboy` module provides convenience functions for manipulating Ranch listeners. +== Exports + +* link:man:cowboy:start_clear(3)[cowboy:start_clear(3)] - Listen for connections using plain TCP +* link:man:cowboy:start_tls(3)[cowboy:start_tls(3)] - Listen for connections using TLS +* link:man:cowboy:stop_listener(3)[cowboy:stop_listener(3)] - Stop the given listener +* link:man:cowboy:set_env(3)[cowboy:set_env(3)] - Update a listener's environment value + == Types -=== fields() = [Field] +=== fields() [source,erlang] ---- -Field = atom() - | {atom(), cowboy_constraints:constraint() | [cowboy_constraints:constraint()]} - | {atom(), cowboy_constraints:constraint() | [cowboy_constraints:constraint()], any()}] +fields() :: [Name + | {Name, Constraints} + | {Name, Constraints, Default}] + +Name :: atom() +Constraints :: Constraint | [Constraint] +Constraint :: cowboy_constraints:constraint() +Default :: any() ---- -Fields for match operations. Constraint(s) and default value are optional. - -=== http_headers() = [{binary(), iodata()}] - -HTTP headers as a list of key/values. - -=== http_status() = non_neg_integer() | binary() +Fields description for match operations. -HTTP status. +This type is used in link:man:cowboy_router(3)[cowboy_router] +for matching bindings and in the match functions found in +link:man:cowboy_req(3)[cowboy_req]. -A binary status can be used to set a custom message. +=== http_headers() -=== http_version() = \'HTTP/1.1' | \'HTTP/1.0' - -HTTP version. - -=== `onresponse_fun() = fun((http_status(), http_headers(), iodata(), cowboy_req:req()) -> cowboy_req:req())` - -Fun called immediately before sending the response. +[source,erlang] +---- +http_headers() :: #{binary() => iodata()} +---- -It can perform any operation on the Req object, including -reading the request body or replying. If a reply is sent, it -overrides the reply initially sent. The callback will not be -called again for the new reply. +HTTP headers. -== Exports +=== http_status() -=== start_http(Ref, NbAcceptors, TransOpts, ProtoOpts) -> {ok, pid()} +[source,erlang] +---- +http_status() :: non_neg_integer() | binary() +---- -Ref = ranch:ref():: Listener name. -NbAcceptors = non_neg_integer():: Number of acceptor processes. -TransOpts = ranch_tcp:opts():: TCP transport options. -ProtoOpts = cowboy_protocol:opts():: HTTP protocol options. +HTTP response status. -Start listening for HTTP connections. Returns the pid for this -listener's supervisor. +A binary status can be used to set a reason phrase. Note +however that HTTP/2 only sends the status code and drops +the reason phrase entirely. -=== start_https(Ref, NbAcceptors, TransOpts, ProtoOpts) -> {ok, pid()} +=== http_version() -Ref = ranch:ref():: Listener name. -NbAcceptors = non_neg_integer():: Number of acceptor processes. -TransOpts = ranch_ssl:opts():: SSL transport options. -ProtoOpts = cowboy_protocol:opts():: HTTP protocol options. +[source,erlang] +---- +http_version() :: 'HTTP/2' | 'HTTP/1.1' | 'HTTP/1.0' +---- -Start listening for HTTPS connections. Returns the pid for this -listener's supervisor. +HTTP version. -=== stop_listener(Ref) -> ok | {error, not_found} +Note that semantically, HTTP/1.1 and HTTP/2 are equivalent. -Ref = ranch:ref():: Listener name. +=== opts() -Stop a previously started listener. +[source,erlang] +---- +opts() :: map() +---- -=== set_env(Ref, Name, Value) -> ok +Options for the HTTP/1.1, HTTP/2 and Websocket protocols. -Ref = ranch:ref():: Listener name. -Name = atom():: Name of environment value. -Value = any():: Environment value. +The protocol options are in a map containing all the options for +the different protocols that may be involved when connecting +to the listener, including HTTP/1.1 and HTTP/2 but also +subprotocols like Websocket. +// @todo For Websocket this might change in the future. -Set or update an environment value for an already running listener. -This will take effect on all subsequent connections. +The HTTP/1.1 options are documented in the +link:man:cowboy_http(3)[cowboy_http(3)] manual; +the HTTP/2 options in +link:man:cowboy_http2(3)[cowboy_http2(3)]; +and the Websocket options in +link:man:cowboy_websocket(3)[cowboy_websocket(3)]. == See also -The http://ninenines.eu/docs/en/ranch/HEAD/guide[Ranch guide] -provides detailed information about how listeners work. +link:man:cowboy(7)[cowboy(7)], +link:man:ranch(3)[ranch(3)] -- cgit v1.2.3