summaryrefslogtreecommitdiffstats
path: root/docs/en/cowboy/2.9/manual/cowboy_req.read_and_match_urlencoded_body/index.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/en/cowboy/2.9/manual/cowboy_req.read_and_match_urlencoded_body/index.html')
-rw-r--r--docs/en/cowboy/2.9/manual/cowboy_req.read_and_match_urlencoded_body/index.html250
1 files changed, 250 insertions, 0 deletions
diff --git a/docs/en/cowboy/2.9/manual/cowboy_req.read_and_match_urlencoded_body/index.html b/docs/en/cowboy/2.9/manual/cowboy_req.read_and_match_urlencoded_body/index.html
new file mode 100644
index 00000000..c9fa0c0d
--- /dev/null
+++ b/docs/en/cowboy/2.9/manual/cowboy_req.read_and_match_urlencoded_body/index.html
@@ -0,0 +1,250 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="description" content="">
+ <meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
+
+ <title>Nine Nines: cowboy_req:read_and_match_urlencoded_body(3)</title>
+
+ <link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
+ <link href="/css/99s.css?r=7" rel="stylesheet">
+
+ <link rel="shortcut icon" href="/img/ico/favicon.ico">
+ <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
+ <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
+ <link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
+
+
+</head>
+
+
+<body class="">
+ <header id="page-head">
+ <div id="topbar" class="container">
+ <div class="row">
+ <div class="span2">
+ <h1 id="logo"><a href="/" title="99s">99s</a></h1>
+ </div>
+ <div class="span10">
+
+ <div id="side-header">
+ <nav>
+ <ul>
+ <li><a title="Hear my thoughts" href="/articles">Articles</a></li>
+ <li><a title="Watch my talks" href="/talks">Talks</a></li>
+ <li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
+ <li><a title="Request my services" href="/services">Consulting & Training</a></li>
+ </ul>
+ </nav>
+ <ul id="social">
+ <li>
+ <a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
+ </li>
+ <li>
+ <a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ </div>
+
+
+</header>
+
+<div id="contents" class="two_col">
+<div class="container">
+<div class="row">
+<div id="docs" class="span9 maincol">
+
+<h1 class="lined-header"><span>cowboy_req:read_and_match_urlencoded_body(3)</span></h1>
+
+<h2 id="_name">Name</h2>
+<p>cowboy_req:read_and_match_urlencoded_body - Read, parse and match a urlencoded request body against constraints</p>
+<h2 id="_description">Description</h2>
+<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><b><font color="#000000">read_and_match_urlencoded_body</font></b>(<font color="#009900">Fields</font>, <font color="#009900">Req</font>)
+ <font color="#990000">-&gt;</font> <b><font color="#000000">read_and_match_urlencoded_body</font></b>(<font color="#009900">Fields</font>, <font color="#009900">Req</font>, #{})
+
+<b><font color="#000000">read_and_match_urlencoded_body</font></b>(<font color="#009900">Fields</font>, <font color="#009900">Req</font>, <font color="#009900">Opts</font>)
+ <font color="#990000">-&gt;</font> {<font color="#FF6600">ok</font>, <font color="#009900">Body</font>, <font color="#009900">Req</font>}
+
+<font color="#009900">Fields</font> <font color="#990000">::</font> <b><font color="#000000">cowboy:fields</font></b>()
+<font color="#009900">Req</font> <font color="#990000">::</font> <b><font color="#000000">cowboy_req:req</font></b>()
+<font color="#009900">Opts</font> <font color="#990000">::</font> <b><font color="#000000">cowboy_req:read_body_opts</font></b>()
+<font color="#009900">Body</font> <font color="#990000">::</font> #{<b><font color="#000080">atom</font></b>() <font color="#990000">=&gt;</font> <b><font color="#000000">any</font></b>()}</tt></pre>
+</div></div>
+<p>Read, parse and match a urlencoded request body against constraints.</p>
+<p>This function reads the request body and parses it as <code>application/x-www-form-urlencoded</code>. It then applies the given field constraints to the urlencoded data and returns the result as a map.</p>
+<p>The urlencoded media type is used by Web browsers when submitting HTML forms using the POST method.</p>
+<p>Cowboy will only return the values specified in the fields list, and ignore all others. Fields can be either the key requested; the key along with a list of constraints; or the key, a list of constraints and a default value in case the key is missing.</p>
+<p>This function will crash if the key is missing and no default value is provided. This function will also crash if a constraint fails.</p>
+<p>The key must be provided as an atom. The key of the returned map will be that atom. The value may be converted through the use of constraints, making this function able to extract, validate and convert values all in one step.</p>
+<p>Cowboy needs to read the full body before parsing. By default it will read bodies of size up to 64KB. It is possible to provide options to read larger bodies if required.</p>
+<p>Cowboy will automatically handle protocol details including the expect header, chunked transfer-encoding and others.</p>
+<p>Once the body has been read, Cowboy sets the content-length header if it was not previously provided.</p>
+<p>This function can only be called once. Calling it again will result in undefined behavior.</p>
+<h2 id="_arguments">Arguments</h2>
+<dl><dt>Fields</dt>
+<dd><p>Fields to retrieve from the urlencoded body.</p>
+<p>See <a href="../cowboy">cowboy(3)</a> for a complete description.</p>
+</dd>
+<dt>Req</dt>
+<dd><p>The Req object.</p>
+</dd>
+<dt>Opts</dt>
+<dd><p>A map of body reading options. Please refer to <a href="../cowboy_req.read_body">cowboy_req:read_body(3)</a> for details about each option.</p>
+<p>This function defaults the <code>length</code> to 64KB and the <code>period</code> to 5 seconds.</p>
+</dd>
+</dl>
+<h2 id="_return_value">Return value</h2>
+<p>An <code>ok</code> tuple is returned.</p>
+<p>Desired values are returned as a map. The key is the atom that was given in the list of fields, and the value is the optionally converted value after applying constraints.</p>
+<p>The map contains the same keys that were given in the fields.</p>
+<p>An exception is triggered when the match fails.</p>
+<p>The Req object returned in the tuple must be used from that point onward. It contains a more up to date representation of the request. For example it may have an added content-length header once the body has been read.</p>
+<h2 id="_changelog">Changelog</h2>
+<ul><li><strong>2.5</strong>: Function introduced.
+</li>
+</ul>
+<h2 id="_examples">Examples</h2>
+<div class="listingblock"><div class="title">Match fields</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><i><font color="#9A1900">%% ID and Lang are binaries.</font></i>
+#{<font color="#FF6600">id</font> <font color="#990000">:=</font> <font color="#009900">ID</font>, <font color="#FF6600">lang</font> <font color="#990000">:=</font> <font color="#009900">Lang</font>}
+ <font color="#990000">=</font> <b><font color="#000000">cowboy_req:read_and_match_urlencoded_body</font></b>(
+ [<font color="#FF6600">id</font>, <font color="#FF6600">lang</font>], <font color="#009900">Req</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Match fields and apply constraints</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt><i><font color="#9A1900">%% ID is an integer and Lang a non-empty binary.</font></i>
+#{<font color="#FF6600">id</font> <font color="#990000">:=</font> <font color="#009900">ID</font>, <font color="#FF6600">lang</font> <font color="#990000">:=</font> <font color="#009900">Lang</font>}
+ <font color="#990000">=</font> <b><font color="#000000">cowboy_req:read_and_match_urlencoded_body</font></b>(
+ [{<font color="#FF6600">id</font>, <font color="#FF6600">int</font>}, {<font color="#FF6600">lang</font>, <font color="#FF6600">nonempty</font>}], <font color="#009900">Req</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Match fields with default values</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>#{<font color="#FF6600">lang</font> <font color="#990000">:=</font> <font color="#009900">Lang</font>}
+ <font color="#990000">=</font> <b><font color="#000000">cowboy_req:read_and_match_urlencoded_body</font></b>(
+ [{<font color="#FF6600">lang</font>, [], <font color="#990000">&lt;&lt;</font><font color="#FF0000">"en-US"</font><font color="#990000">&gt;&gt;</font>}], <font color="#009900">Req</font>)<font color="#990000">.</font></tt></pre>
+</div></div>
+<div class="listingblock"><div class="title">Allow large urlencoded bodies</div>
+<div class="content"><!-- Generator: GNU source-highlight 3.1.9
+by Lorenzo Bettini
+http://www.lorenzobettini.it
+http://www.gnu.org/software/src-highlite -->
+<pre><tt>{<font color="#FF6600">ok</font>, <font color="#009900">Body</font>, <font color="#009900">Req</font>} <font color="#990000">=</font> <b><font color="#000000">cowboy_req:read_and_match_urlencoded_body</font></b>(
+ <font color="#009900">Fields</font>, <font color="#009900">Req0</font>, #{<b><font color="#000080">length</font></b> <font color="#990000">=&gt;</font> <font color="#993399">1000000</font>})<font color="#990000">.</font></tt></pre>
+</div></div>
+<h2 id="_see_also">See also</h2>
+<p><a href="../cowboy_req">cowboy_req(3)</a>, <a href="../cowboy_req.has_body">cowboy_req:has_body(3)</a>, <a href="../cowboy_req.body_length">cowboy_req:body_length(3)</a>, <a href="../cowboy_req.read_body">cowboy_req:read_body(3)</a>, <a href="../cowboy_req.read_urlencoded_body">cowboy_req:read_urlencoded_body(3)</a>, <a href="../cowboy_req.read_part">cowboy_req:read_part(3)</a>, <a href="../cowboy_req.read_part_body">cowboy_req:read_part_body(3)</a></p>
+
+
+
+
+
+
+</div>
+
+<div class="span3 sidecol">
+
+
+<h3>
+ Cowboy
+ 2.9
+ Function Reference
+
+</h3>
+
+<ul>
+
+ <li><a href="/docs/en/cowboy/2.9/guide">User Guide</a></li>
+
+
+ <li><a href="/docs/en/cowboy/2.9/manual">Function Reference</a></li>
+
+
+</ul>
+
+<h4 id="docs-nav">Navigation</h4>
+
+<h4>Version select</h4>
+<ul>
+
+
+
+ <li><a href="/docs/en/cowboy/2.9/manual">2.9</a></li>
+
+ <li><a href="/docs/en/cowboy/2.8/manual">2.8</a></li>
+
+ <li><a href="/docs/en/cowboy/2.7/manual">2.7</a></li>
+
+ <li><a href="/docs/en/cowboy/2.6/manual">2.6</a></li>
+
+ <li><a href="/docs/en/cowboy/2.5/manual">2.5</a></li>
+
+ <li><a href="/docs/en/cowboy/2.4/manual">2.4</a></li>
+
+</ul>
+
+<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
+<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
+<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
+<input type="hidden" name="cmd" value="_donations">
+<input type="hidden" name="business" value="[email protected]">
+<input type="hidden" name="lc" value="FR">
+<input type="hidden" name="item_name" value="Loic Hoguin">
+<input type="hidden" name="item_number" value="99s">
+<input type="hidden" name="currency_code" value="EUR">
+<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
+<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
+<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
+</form><p>Recurring payment options are also available via <a href="https://github.com/sponsors/essen">GitHub Sponsors</a>. These funds are used to cover the recurring expenses like food, dedicated servers or domain names.</p>
+
+
+
+</div>
+</div>
+</div>
+</div>
+
+ <footer>
+ <div class="container">
+ <div class="row">
+ <div class="span6">
+ <p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
+ <nav>
+ <ul>
+ <li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
+ </ul>
+ </nav>
+ </div>
+ <div class="span6 credits">
+ <p><img src="/img/footer_logo.png"></p>
+ <p>Copyright &copy; Loïc Hoguin 2012-2018</p>
+ </div>
+ </div>
+ </div>
+ </footer>
+
+
+ <script src="/js/custom.js"></script>
+ </body>
+</html>
+
+