UNPKG

connect-form

Version:

urlencoded / multipart form parsing middleware for Connect

233 lines (218 loc) 12 kB
<!DOCTYPE html> <html> <head> <title>Connect</title> <meta http-equiv="content-type" value="text/html; charset=utf-8"> <style type="text/css"> body { font: 13px "Helvetica Neue", "Lucida Grande", "Arial"; text-align: center; color: #555; -webkit-text-stroke: 1px rgba(255, 255, 255, 0.1); } h1, h2, h3 { margin: 0; font-size: 22px; font-weight: normal; color: #343434; } h2#Connect { margin-bottom: 25px; font-size: 60px; font-weight: bold; } h2#Connect + p { display: none; } h3 { margin: 35px 0; padding-left: 10px; font-size: 16px; border-left: 15px solid #eee; } h2 { margin-top: 35px; text-shadow: 1px 2px 2px #ddd; } ul { margin: 10px 35px; padding: 0; } ul li .path { padding-left: 5px; font-weight: bold; } ul li .line { padding-right: 5px; font-style: italic; } ul li:first-child .path { padding-left: 0; } p { line-height: 1.5; } p code { padding: 2px 4px; border: 1px solid #ddd; } p em, li em { font-weight: bold; } pre { margin: 25px 0 25px 15px; padding: 15px; border: 1px solid #ddd; -webkit-border-radius: 5px; -moz-border-radius: 5px; -webkit-box-shadow: 1px 1px 6px #ddd; -moz-box-shadow: 1px 1px 6px #ddd; } table { margin-bottom: 35px; width: 100%; border-collapse: collapse; } table td { padding: 5px 10px; font-size: 14px; } table tr { border-bottom: 1px solid #fff; } table tr:last-child { border-bottom: none; } table td:first-child { width: 150px; color: #343434; } #wrapper { margin: 50px auto; width: 750px; text-align: left; } #menu { position: fixed; top: 15px; right: 15px; margin: 0; padding: 0; list-style: none; text-align: right; } #menu li.title { padding: 20px 0 5px 0; font-size: 12px; } code.js { color: #111; } code.js .comment { color: #999; } code.js .string { color: #cc0000; } code.js .number { color: #0000ee; } code.js .keyword { color: #000; font-weight: bold; } a { text-decoration: none; color: #000; } a:hover { text-decoration: underline; } </style> </head> <body> <div id="wrapper"> <ul id="menu"> <li class="title">API</li> <li><a href="api.html">extended api docs</a></li> <li class="title">Middleware</li> <li><a href="lint.html">lint</a></li> <li><a href="flash.html">flash</a></li> <li><a href="logger.html">logger</a></li> <li><a href="format.html">format</a></li> <li><a href="router.html">router</a></li> <li><a href="jsonrpc.html">jsonrpc</a></li> <li><a href="session.html">session</a></li> <li><a href="compiler.html">compiler</a></li> <li><a href="redirect.html">redirect</a></li> <li><a href="errorHandler.html">errorHandler</a></li> <li><a href="bodyDecoder.html">bodyDecoder</a></li> <li><a href="responseTime.html">responseTime</a></li> <li><a href="cookieDecoder.html">cookieDecoder</a></li> <li><a href="conditionalGet.html">conditionalGet</a></li> <li><a href="methodOverride.html">methodOverride</a></li> <li><a href="staticProvider.html">staticProvider</a></li> </ul><div class='mp'> <h2 id="Lint">Lint</h2> <p>The <em>lint</em> middleware aids in middleware development, by performing basic cheques at boot, and during requests. This process currently checks that the:</p> <ul> <li>first param of <code>handle()</code> is <em>req</em> or <em>request</em></li> <li>second param of <code>handle()</code> is <em>res</em> or <em>response</em></li> <li>third param of <code>handle()</code> is <em>next</em></li> <li>source of <code>handle()</code> to see if <code>next()</code> is called, or if the request is responded to</li> <li><code>req.headers</code> is accessed with lowercase</li> </ul> <h3 id="Example">Example</h3> <pre><code class="js"><span class="keyword">var</span> <span class="class">Server</span> = <span class="variable">module</span>.<span class="variable">exports</span> = <span class="variable">connect</span>.<span class="variable">createServer</span>( <span class="comment">// No named params</span> <span class="keyword">function</span> <span class="variable">params</span>(){ <span class="variable">arguments</span>[<span class="number integer">2</span>](); }, <span class="comment">// Does not call next AND does not respond</span> <span class="keyword">function</span> <span class="variable">hang</span>(<span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">next</span>){ <span class="comment">// Call foo() instead so</span> <span class="comment">// that our demo can still function.</span> <span class="keyword">var</span> <span class="variable">foo</span> = <span class="variable">next</span>; <span class="variable">foo</span>(); <span class="comment">// All good</span> <span class="keyword">var</span> <span class="variable">ct</span> = <span class="variable">req</span>.<span class="variable">headers</span>[<span class="string">'content-type'</span>]; }, <span class="keyword">function</span> <span class="variable">allGood</span>(<span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">next</span>){ <span class="comment">// All good</span> <span class="variable">next</span>(); }, <span class="keyword">function</span> <span class="variable">reqHeaders</span>(<span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">next</span>){ <span class="comment">// Request headers are always normalized as</span> <span class="comment">// lowercased by ryan's http parser.</span> <span class="keyword">var</span> <span class="variable">ct</span> = <span class="variable">req</span>.<span class="variable">headers</span>[<span class="string">'Content-Type'</span>]; <span class="variable">next</span>(); }, <span class="keyword">function</span> <span class="variable">methodUppercase</span>(<span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">next</span>){ <span class="comment">// req.method should be uppercase</span> <span class="variable">req</span>.<span class="variable">method</span> = <span class="string">'get'</span>; <span class="variable">next</span>(); } ); <span class="class">Server</span>.<span class="variable">use</span>(<span class="string">'/'</span>, <span class="variable">connect</span>.<span class="variable">lint</span>(<span class="class">Server</span>)); </code></pre> <h3 id="Sample-Output">Sample Output</h3> <pre><code class="js"><span class="class">Warning</span>: <span class="variable">layer</span> <span class="variable">params</span>:<span class="number integer">0</span> <span class="class">First</span> <span class="variable">parameter</span> <span class="variable">should</span> <span class="variable">be</span> <span class="variable">named</span> <span class="variable">req</span> <span class="variable">or</span> <span class="variable">request</span>, <span class="variable">but</span> <span class="variable">is</span> <span class="variable">undefined</span> <span class="class">Warning</span>: <span class="variable">layer</span> <span class="variable">params</span>:<span class="number integer">0</span> <span class="class">Second</span> <span class="variable">parameter</span> <span class="variable">should</span> <span class="variable">be</span> <span class="variable">named</span> <span class="variable">res</span> <span class="variable">or</span> <span class="variable">response</span>, <span class="variable">but</span> <span class="variable">is</span> <span class="variable">undefined</span> <span class="class">Warning</span>: <span class="variable">layer</span> <span class="variable">params</span>:<span class="number integer">0</span> <span class="class">Third</span> <span class="variable">parameter</span> <span class="variable">should</span> <span class="variable">be</span> <span class="variable">named</span> <span class="variable">next</span>, <span class="variable">but</span> <span class="variable">is</span> <span class="variable">undefined</span> <span class="class">Warning</span>: <span class="variable">layer</span> <span class="variable">params</span>:<span class="number integer">0</span> <span class="class">Does</span> <span class="variable">not</span> <span class="variable">seem</span> <span class="variable">to</span> <span class="variable">call</span> <span class="variable">next</span>(), <span class="variable">or</span> <span class="variable">respond</span> <span class="variable">to</span> <span class="variable">the</span> <span class="variable">request</span> <span class="class">Warning</span>: <span class="variable">layer</span> <span class="variable">hang</span>:<span class="number integer">1</span> <span class="class">Does</span> <span class="variable">not</span> <span class="variable">seem</span> <span class="variable">to</span> <span class="variable">call</span> <span class="variable">next</span>(), <span class="variable">or</span> <span class="variable">respond</span> <span class="variable">to</span> <span class="variable">the</span> <span class="variable">request</span> <span class="class">Warning</span>: <span class="variable">layer</span> <span class="variable">req</span>.<span class="variable">headers</span>:<span class="number integer">3</span> <span class="class">Request</span> <span class="variable">headers</span> <span class="variable">are</span> <span class="variable">lowercased</span>, <span class="variable">seems</span> <span class="variable">to</span> <span class="variable">be</span> <span class="variable">accessed</span> <span class="keyword">with</span> <span class="variable">capitals</span> <span class="number integer">0</span>) <span class="variable">params</span>: <span class="keyword">function</span> (){ <span class="variable">arguments</span>[<span class="number integer">2</span>](); } <span class="number integer">1</span>) <span class="variable">hang</span>: <span class="keyword">function</span> (<span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">next</span>){ <span class="comment">// Call foo() instead so</span> <span class="comment">// that our demo can still function.</span> <span class="keyword">var</span> <span class="variable">foo</span> = <span class="variable">next</span>; <span class="variable">foo</span>(); <span class="comment">// All good</span> <span class="keyword">var</span> <span class="variable">ct</span> = <span class="variable">req</span>.<span class="variable">headers</span>[<span class="string">'content-type'</span>]; } <span class="number integer">3</span>) <span class="variable">req</span>.<span class="variable">headers</span>: <span class="keyword">function</span> (<span class="variable">req</span>, <span class="variable">res</span>, <span class="variable">next</span>){ <span class="comment">// Request headers are always normalized as</span> <span class="comment">// lowercased by ryan's http parser.</span> <span class="keyword">var</span> <span class="variable">ct</span> = <span class="variable">req</span>.<span class="variable">headers</span>[<span class="string">'Content-Type'</span>]; <span class="variable">next</span>(); } </code></pre> </div> </div> </body> </html>