aboutsummaryrefslogtreecommitdiffstats
path: root/doc/src/manual/gun.post.asciidoc
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/manual/gun.post.asciidoc')
-rw-r--r--doc/src/manual/gun.post.asciidoc116
1 files changed, 116 insertions, 0 deletions
diff --git a/doc/src/manual/gun.post.asciidoc b/doc/src/manual/gun.post.asciidoc
new file mode 100644
index 0000000..e548824
--- /dev/null
+++ b/doc/src/manual/gun.post.asciidoc
@@ -0,0 +1,116 @@
+= gun:post(3)
+
+== Name
+
+gun:post - Process the enclosed representation according to a resource's own semantics
+
+== Description
+
+[source,erlang]
+----
+post(ConnPid, Path, Headers)
+ -> StreamRef
+
+post(ConnPid, Path, Headers, Body)
+ -> post(ConnPid, Path, Headers, Body, #{})
+
+post(ConnPid, Path, Headers, Body, ReqOpts)
+ -> StreamRef
+
+ConnPid :: pid()
+Path :: iodata()
+Headers :: [{binary(), iodata()}]
+Body :: iodata()
+ReqOpts :: gun:req_opts()
+StreamRef :: reference()
+----
+
+Process the enclosed representation according to a resource's
+own semantics.
+
+The behavior of this function varies depending on whether
+a body is provided.
+
+The function `post/3` expects either a content-length
+or content-type header to indicate that a body will be
+sent afterwards. The body can then be sent using
+link:man:gun:data(3)[gun:data(3)].
+
+The function `post/4,5` sends the entire request, including
+the request body, immediately. It is therefore not possible
+to use link:man:gun:data(3)[gun:data(3)] after that. You
+should provide a content-type header. Gun will set the
+content-length header automatically.
+
+== Arguments
+
+ConnPid::
+
+The pid of the Gun connection process.
+
+Path::
+
+Path to the resource.
+
+Headers::
+
+Additional request headers.
+
+Body::
+
+Request body.
+
+ReqOpts::
+
+Request options.
+
+== Return value
+
+A reference that identifies the newly created stream is
+returned. It is this reference that must be passed in
+subsequent calls and will be received in messages related
+to this new stream.
+
+== Changelog
+
+* *1.0*: Function introduced.
+
+== Examples
+
+.Post to a resource
+[source,erlang]
+----
+StreamRef = gun:post(ConnPid, "/search",
+ [{<<"content-type">>, <<"application/x-www-form-urlencoded">>}],
+ <<"q=nine%20nines">>).
+----
+
+.Post to a resource in multiple calls
+[source,erlang]
+----
+StreamRef = gun:post(ConnPid, "/search", [
+ {<<"content-type">>, <<"application/x-www-form-urlencoded">>}
+]).
+gun:data(ConnPid, StreamRef, fin, <<"q=nine%20nines">>).
+----
+
+.Post to a resource with request options
+[source,erlang]
+----
+StreamRef = gun:post(ConnPid, "/search",
+ [{<<"content-type">>, <<"application/x-www-form-urlencoded">>}],
+ <<"q=nine%20nines">>,
+ #{reply_to => ReplyToPid}).
+----
+
+== See also
+
+link:man:gun(3)[gun(3)],
+link:man:gun:patch(3)[gun:patch(3)],
+link:man:gun:put(3)[gun:put(3)],
+link:man:gun:await(3)[gun:await(3)],
+link:man:gun:await_body(3)[gun:await_body(3)],
+link:man:gun_push(3)[gun_push(3)],
+link:man:gun_inform(3)[gun_inform(3)],
+link:man:gun_response(3)[gun_response(3)],
+link:man:gun_data(3)[gun_data(3)]