Commit f9e0a371 authored by Jacek Furmankiewicz's avatar Jacek Furmankiewicz

add argument parsing docs

parent 190a9a2c
Argument parsing
===================
CorePost can automatically parse query arguments, form arguments, as well as basic JSON, YAML and XML documents
and extract those as direct arguments to a REST router method.
Let's say we have a basic method that responds to GET, POST and PUT requests.
It expects a first name and last name and outputs them back in the response::
@router("/name",(Http.GET,Http.POST,Http.PUT))
def getName(self,request,first,last,**kwargs):
return "%s %s" % (first, last)
Query arguments
---------------
For GET requests, the query arguments will be automatically parsed, e.g.::
curl http://127.0.0.1/name?first=John&last=Doe
Form encoded arguments
----------------------
For POST/PUT requests, any form-encoded arguments will be automatically parsed, e.g.::
curl -X POST http://localhost/name -d "first=John&last=Doe"
JSON document arguments
-----------------------
For the same method, you could just post a JSON document instead that looks like this::
{"first":"John","last":"Doe"}
CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the *'application/json'* content type to be passed.
YAML document arguments
-----------------------
For the same method, you could just post a YAML document that looks like this::
first:John
last:Doe
CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the *'text/yaml'* content type to be passed.
XML document arguments
----------------------
XML documents are supported as well. In that case, CorePost will first parse all the attributes on the root node
and then all of the children underneath the main root node.
Hence all of the XML formats below are valid and would generate the same parameters to a method.
Attributes only::
<root first="John" last="Doe"/>
Mix of attributes and child nodes::
<root first="John">
<last>Doe</last>
</root>
Child nodes only::
<root>
<first>John</first>
<last>Doe</last>
</root>
Requires the *'text/xml'* OR *'application/xml'* content type to be passed.
As you can see from the examples above, a single CorePost router method can handle all these varied forms of argument parsing
for you without any additional effort.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Argument parsing &mdash; CorePost 0.0.14 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '0.0.14',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="CorePost 0.0.14 documentation" href="index.html" />
<link rel="next" title="Argument validation" href="arguments.html" />
<link rel="prev" title="URL Routing" href="url_routing.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="arguments.html" title="Argument validation"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="url_routing.html" title="URL Routing"
accesskey="P">previous</a> |</li>
<li><a href="index.html">CorePost 0.0.14 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="argument-parsing">
<h1>Argument parsing<a class="headerlink" href="#argument-parsing" title="Permalink to this headline"></a></h1>
<p>CorePost can automatically parse query arguments, form arguments, as well as basic JSON, YAML and XML documents
and extract those as direct arguments to a REST router method.</p>
<p>Let&#8217;s say we have a basic method that responds to GET, POST and PUT requests.
It expects a first name and last name and outputs them back in the response:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="nd">@router</span><span class="p">(</span><span class="s">&quot;/name&quot;</span><span class="p">,(</span><span class="n">Http</span><span class="o">.</span><span class="n">GET</span><span class="p">,</span><span class="n">Http</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span><span class="n">Http</span><span class="o">.</span><span class="n">PUT</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">getName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">request</span><span class="p">,</span><span class="n">first</span><span class="p">,</span><span class="n">last</span><span class="p">,</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="query-arguments">
<h2>Query arguments<a class="headerlink" href="#query-arguments" title="Permalink to this headline"></a></h2>
<p>For GET requests, the query arguments will be automatically parsed, e.g.:</p>
<div class="highlight-python"><pre>curl http://127.0.0.1/name?first=John&amp;last=Doe</pre>
</div>
</div>
<div class="section" id="form-encoded-arguments">
<h2>Form encoded arguments<a class="headerlink" href="#form-encoded-arguments" title="Permalink to this headline"></a></h2>
<p>For POST/PUT requests, any form-encoded arguments will be automatically parsed, e.g.:</p>
<div class="highlight-python"><pre>curl -X POST http://localhost/name -d "first=John&amp;last=Doe"</pre>
</div>
</div>
<div class="section" id="json-document-arguments">
<h2>JSON document arguments<a class="headerlink" href="#json-document-arguments" title="Permalink to this headline"></a></h2>
<p>For the same method, you could just post a JSON document instead that looks like this:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span><span class="s">&quot;first&quot;</span><span class="p">:</span><span class="s">&quot;John&quot;</span><span class="p">,</span><span class="s">&quot;last&quot;</span><span class="p">:</span><span class="s">&quot;Doe&quot;</span><span class="p">}</span>
</pre></div>
</div>
<p>CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the <em>&#8216;application/json&#8217;</em> content type to be passed.</p>
</div>
<div class="section" id="yaml-document-arguments">
<h2>YAML document arguments<a class="headerlink" href="#yaml-document-arguments" title="Permalink to this headline"></a></h2>
<p>For the same method, you could just post a YAML document that looks like this:</p>
<div class="highlight-python"><pre>first:John
last:Doe</pre>
</div>
<p>CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the <em>&#8216;text/yaml&#8217;</em> content type to be passed.</p>
</div>
<div class="section" id="xml-document-arguments">
<h2>XML document arguments<a class="headerlink" href="#xml-document-arguments" title="Permalink to this headline"></a></h2>
<p>XML documents are supported as well. In that case, CorePost will first parse all the attributes on the root node
and then all of the children underneath the main root node.</p>
<p>Hence all of the XML formats below are valid and would generate the same parameters to a method.</p>
<p>Attributes only:</p>
<div class="highlight-python"><pre>&lt;root first="John" last="Doe"/&gt;</pre>
</div>
<p>Mix of attributes and child nodes:</p>
<div class="highlight-python"><pre>&lt;root first="John"&gt;
&lt;last&gt;Doe&lt;/last&gt;
&lt;/root&gt;</pre>
</div>
<p>Child nodes only:</p>
<div class="highlight-python"><pre>&lt;root&gt;
&lt;first&gt;John&lt;/first&gt;
&lt;last&gt;Doe&lt;/last&gt;
&lt;/root&gt;</pre>
</div>
<p>Requires the <em>&#8216;text/xml&#8217;</em> OR <em>&#8216;application/xml&#8217;</em> content type to be passed.</p>
<p>As you can see from the examples above, a single CorePost router method can handle all these varied forms of argument parsing
for you without any additional effort.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Argument parsing</a><ul>
<li><a class="reference internal" href="#query-arguments">Query arguments</a></li>
<li><a class="reference internal" href="#form-encoded-arguments">Form encoded arguments</a></li>
<li><a class="reference internal" href="#json-document-arguments">JSON document arguments</a></li>
<li><a class="reference internal" href="#yaml-document-arguments">YAML document arguments</a></li>
<li><a class="reference internal" href="#xml-document-arguments">XML document arguments</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="url_routing.html"
title="previous chapter">URL Routing</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="arguments.html"
title="next chapter">Argument validation</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/argument_parsing.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="arguments.html" title="Argument validation"
>next</a> |</li>
<li class="right" >
<a href="url_routing.html" title="URL Routing"
>previous</a> |</li>
<li><a href="index.html">CorePost 0.0.14 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Jacek Furmankiewicz.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
</div>
</body>
</html>
\ No newline at end of file
Argument parsing
===================
CorePost can automatically parse query arguments, form arguments, as well as basic JSON, YAML and XML documents
and extract those as direct arguments to a REST router method.
Let's say we have a basic method that responds to GET, POST and PUT requests.
It expects a first name and last name and outputs them back in the response::
@router("/name",(Http.GET,Http.POST,Http.PUT))
def getName(self,request,first,last,**kwargs):
return "%s %s" % (first, last)
Query arguments
---------------
For GET requests, the query arguments will be automatically parsed, e.g.::
curl http://127.0.0.1/name?first=John&last=Doe
Form encoded arguments
----------------------
For POST/PUT requests, any form-encoded arguments will be automatically parsed, e.g.::
curl -X POST http://localhost/name -d "first=John&last=Doe"
JSON document arguments
-----------------------
For the same method, you could just post a JSON document instead that looks like this::
{"first":"John","last":"Doe"}
CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the *'application/json'* content type to be passed.
YAML document arguments
-----------------------
For the same method, you could just post a YAML document that looks like this::
first:John
last:Doe
CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the *'text/yaml'* content type to be passed.
XML document arguments
----------------------
XML documents are supported as well. In that case, CorePost will first parse all the attributes on the root node
and then all of the children underneath the main root node.
Hence all of the XML formats below are valid and would generate the same parameters to a method.
Attributes only::
<root first="John" last="Doe"/>
Mix of attributes and child nodes::
<root first="John">
<last>Doe</last>
</root>
Child nodes only::
<root>
<first>John</first>
<last>Doe</last>
</root>
Requires the *'text/xml'* OR *'application/xml'* content type to be passed.
As you can see from the examples above, a single CorePost router method can handle all these varied forms of argument parsing
for you without any additional effort.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Argument parsing &mdash; CorePost 0.0.14 documentation</title>
<link rel="stylesheet" href="_static/default.css" type="text/css" />
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '',
VERSION: '0.0.14',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/underscore.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<link rel="top" title="CorePost 0.0.14 documentation" href="index.html" />
<link rel="next" title="Argument validation" href="arguments.html" />
<link rel="prev" title="URL Routing" href="url_routing.html" />
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="arguments.html" title="Argument validation"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="url_routing.html" title="URL Routing"
accesskey="P">previous</a> |</li>
<li><a href="index.html">CorePost 0.0.14 documentation</a> &raquo;</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="argument-parsing">
<h1>Argument parsing<a class="headerlink" href="#argument-parsing" title="Permalink to this headline"></a></h1>
<p>CorePost can automatically parse query arguments, form arguments, as well as basic JSON, YAML and XML documents
and extract those as direct arguments to a REST router method.</p>
<p>Let&#8217;s say we have a basic method that responds to GET, POST and PUT requests.
It expects a first name and last name and outputs them back in the response:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="nd">@router</span><span class="p">(</span><span class="s">&quot;/name&quot;</span><span class="p">,(</span><span class="n">Http</span><span class="o">.</span><span class="n">GET</span><span class="p">,</span><span class="n">Http</span><span class="o">.</span><span class="n">POST</span><span class="p">,</span><span class="n">Http</span><span class="o">.</span><span class="n">PUT</span><span class="p">))</span>
<span class="k">def</span> <span class="nf">getName</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span><span class="n">request</span><span class="p">,</span><span class="n">first</span><span class="p">,</span><span class="n">last</span><span class="p">,</span><span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
<span class="k">return</span> <span class="s">&quot;</span><span class="si">%s</span><span class="s"> </span><span class="si">%s</span><span class="s">&quot;</span> <span class="o">%</span> <span class="p">(</span><span class="n">first</span><span class="p">,</span> <span class="n">last</span><span class="p">)</span>
</pre></div>
</div>
<div class="section" id="query-arguments">
<h2>Query arguments<a class="headerlink" href="#query-arguments" title="Permalink to this headline"></a></h2>
<p>For GET requests, the query arguments will be automatically parsed, e.g.:</p>
<div class="highlight-python"><pre>curl http://127.0.0.1/name?first=John&amp;last=Doe</pre>
</div>
</div>
<div class="section" id="form-encoded-arguments">
<h2>Form encoded arguments<a class="headerlink" href="#form-encoded-arguments" title="Permalink to this headline"></a></h2>
<p>For POST/PUT requests, any form-encoded arguments will be automatically parsed, e.g.:</p>
<div class="highlight-python"><pre>curl -X POST http://localhost/name -d "first=John&amp;last=Doe"</pre>
</div>
</div>
<div class="section" id="json-document-arguments">
<h2>JSON document arguments<a class="headerlink" href="#json-document-arguments" title="Permalink to this headline"></a></h2>
<p>For the same method, you could just post a JSON document instead that looks like this:</p>
<div class="highlight-python"><div class="highlight"><pre><span class="p">{</span><span class="s">&quot;first&quot;</span><span class="p">:</span><span class="s">&quot;John&quot;</span><span class="p">,</span><span class="s">&quot;last&quot;</span><span class="p">:</span><span class="s">&quot;Doe&quot;</span><span class="p">}</span>
</pre></div>
</div>
<p>CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the <em>&#8216;application/json&#8217;</em> content type to be passed.</p>
</div>
<div class="section" id="yaml-document-arguments">
<h2>YAML document arguments<a class="headerlink" href="#yaml-document-arguments" title="Permalink to this headline"></a></h2>
<p>For the same method, you could just post a YAML document that looks like this:</p>
<div class="highlight-python"><pre>first:John
last:Doe</pre>
</div>
<p>CorePost will automatically pass all the root elements of the document as arguments into a method.
Requires the <em>&#8216;text/yaml&#8217;</em> content type to be passed.</p>
</div>
<div class="section" id="xml-document-arguments">
<h2>XML document arguments<a class="headerlink" href="#xml-document-arguments" title="Permalink to this headline"></a></h2>
<p>XML documents are supported as well. In that case, CorePost will first parse all the attributes on the root node
and then all of the children underneath the main root node.</p>
<p>Hence all of the XML formats below are valid and would generate the same parameters to a method.</p>
<p>Attributes only:</p>
<div class="highlight-python"><pre>&lt;root first="John" last="Doe"/&gt;</pre>
</div>
<p>Mix of attributes and child nodes:</p>
<div class="highlight-python"><pre>&lt;root first="John"&gt;
&lt;last&gt;Doe&lt;/last&gt;
&lt;/root&gt;</pre>
</div>
<p>Child nodes only:</p>
<div class="highlight-python"><pre>&lt;root&gt;
&lt;first&gt;John&lt;/first&gt;
&lt;last&gt;Doe&lt;/last&gt;
&lt;/root&gt;</pre>
</div>
<p>Requires the <em>&#8216;text/xml&#8217;</em> OR <em>&#8216;application/xml&#8217;</em> content type to be passed.</p>
<p>As you can see from the examples above, a single CorePost router method can handle all these varied forms of argument parsing
for you without any additional effort.</p>
</div>
</div>
</div>
</div>
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Table Of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">Argument parsing</a><ul>
<li><a class="reference internal" href="#query-arguments">Query arguments</a></li>
<li><a class="reference internal" href="#form-encoded-arguments">Form encoded arguments</a></li>
<li><a class="reference internal" href="#json-document-arguments">JSON document arguments</a></li>
<li><a class="reference internal" href="#yaml-document-arguments">YAML document arguments</a></li>
<li><a class="reference internal" href="#xml-document-arguments">XML document arguments</a></li>
</ul>
</li>
</ul>
<h4>Previous topic</h4>
<p class="topless"><a href="url_routing.html"
title="previous chapter">URL Routing</a></p>
<h4>Next topic</h4>
<p class="topless"><a href="arguments.html"
title="next chapter">Argument validation</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
<li><a href="_sources/argument_parsing.txt"
rel="nofollow">Show Source</a></li>
</ul>
<div id="searchbox" style="display: none">
<h3>Quick search</h3>
<form class="search" action="search.html" method="get">
<input type="text" name="q" />
<input type="submit" value="Go" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
<p class="searchtip" style="font-size: 90%">
Enter search terms or a module, class or function name.
</p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="genindex.html" title="General Index"
>index</a></li>
<li class="right" >
<a href="arguments.html" title="Argument validation"
>next</a> |</li>
<li class="right" >
<a href="url_routing.html" title="URL Routing"
>previous</a> |</li>
<li><a href="index.html">CorePost 0.0.14 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2012, Jacek Furmankiewicz.
Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.2.
</div>
</body>
</html>
\ No newline at end of file
Search.setIndex({objects:{},terms:{all:[2,3],code:[0,1,4,5,6,8],partial:5,queri:[2,0,7,9],formencod:7,abil:6,follow:8,children:2,rootid:7,depend:5,received_head:[8,4],readabl:6,under:6,string:[5,4],veri:6,implement:[3,7,8],level:6,list:[7,8],getnam:2,small:3,corepost:[0,1,2,3,4,5,6,7,8],pleas:7,enterpris:6,fortun:6,iresponsefilt:8,direct:2,design:6,pass:[2,8,4],val2:9,val1:9,phoneid:3,index:[],what:[0,6],savecustom:3,abl:1,current:[6,4],delet:[3,1],intarg:4,filterrespons:8,method:[2,9,6,1,4],can:[2,3,4,5,7,8],full:3,usag:6,gener:2,here:3,bodi:5,modular:[0,3],intercept:8,let:[2,6],floatarg:4,address:3,path:[0,3,4],statecod:3,valu:8,convert:[5,0,4],convers:6,extrem:6,chang:8,via:[7,8,4],solut:6,modul:7,countrycod:3,api:6,select:9,regex:7,from:[1,2,3,4,6,7],would:[2,0,6,4],two:[3,8],handler:6,call:5,value2:7,value1:7,recommend:6,type:[2,0,5,8,4],more:6,desir:4,test_yaml:5,phone:3,indic:[],particular:6,known:6,effort:2,customerid:3,content_typ:4,postvalidateschema:7,focu:6,del:3,thin:6,root:[2,9,8,4],def:[2,3,4,5,7,8,9],defer:[0,6,9],tap:4,give:6,accept:5,want:9,multipl:[],write:[6,3,4],how:6,instead:[2,0,6,5],simpl:4,product:[6,4],resourc:[3,8],befor:6,mesh:3,end:3,httpheader:4,tutori:6,seriou:6,element:[2,3],test_return_content_by_accept:5,allow:[3,8],testschema:7,order:[3,8],vari:2,dynam:[3,4],entiti:3,yaml:[2,0,6,5],jit:6,main:2,easier:6,them:[2,3,8,4],"float":4,"return":[1,2,3,4,5,7,8],python:[5,0,6],nation:7,underneath:2,framework:[0,6],introduct:[0,6],name:2,trac:6,easili:4,wraparoundfilt:8,side:6,status:8,hard:6,expect:[2,0,5,4],paymentid:3,extract:[2,0,4],network:6,develop:6,crucial:6,content:[2,0,5,4],restresourc:[3,8,4],deleteal:3,test_content_app_json:4,integr:[5,7],standard:9,pleasant:6,base:[5,1,4],put:[2,5,3,1,4],org:7,care:[6,3],addressid:3,could:2,success:1,filter:[0,6,8],router:[2,4],principl:6,interact:6,first:2,oper:[0,6,9],note:4,blown:3,grade:6,onc:6,lastnam:3,test_json:5,getallcustom:3,hook:4,custom:[6,3,7,8],miss:1,hood:6,differ:[3,4],addcustomheaderfilt:8,dump:5,customeraddress:3,top:[0,6],system:6,least:6,attach:5,conveni:4,schema:7,customeraddressrestservic:3,specifi:7,pars:[2,0,6,5],streetnumb:3,somewhat:6,than:6,john:2,instanc:8,provid:6,structur:3,sai:2,argument:[2,0,1,7,4],packag:7,have:[2,3],tabl:[],need:8,inlinecallback:[0,9],callback:6,rout:[0,3,4,5,6,7,8,9],especi:6,thorough:6,stringarg:4,mix:2,without:2,build:6,which:[6,3],noth:6,singl:[2,3],simplifi:6,importantli:6,deletecustom:3,regular:3,why:[0,6],url:[5,0,3,1,4],request:[0,2,3,4,5,6,7,8,9],doe:[2,0,6],test_content_xml:4,runtim:6,wildcard:4,numericid:4,mostli:6,show:4,text:[2,5],xml:[2,0,6,5],onli:2,firstnam:3,activ:8,plumb:6,should:6,busi:[6,3],meant:6,get:[1,2,3,4,6,8,9],pypi:6,requir:[2,6],run_filter_app:8,filterapp:8,yield:9,whether:5,common:[6,7],deleteallcustom:3,where:3,respond:2,getcustomeraddress:3,see:[2,7],mandatori:1,respons:[2,5,6,3,8],fail:1,parent:3,hopefulli:6,databas:6,behind:6,"import":[3,7,4],paramet:[2,3,8],approach:6,attribut:2,extend:3,addit:2,both:8,last:2,howev:6,application_xml:4,etc:[3,4],text_xml:4,logic:6,pdf:6,com:[6,4],simpli:6,header:8,guid:6,coupl:6,json:[2,0,6,5],much:6,basic:[2,6,4],search:[],ani:[2,6,1],notfoundexcept:3,dave:6,run_rest_app:3,child:[2,3],those:2,"case":[2,3],look:2,tostr:5,servic:[6,3,8],"while":6,abov:[2,3],error:1,fun:6,layer:6,twistedmatrix:[6,4],"__main__":[3,4],henc:[2,6],toolkit:6,kwarg:[2,4,5,7,8,9],myapp:7,postvalidatecustom:7,incom:[5,0,8,4],twistd:4,decor:[0,4],allow_extra_field:7,perform:6,make:6,same:[2,4],handl:[2,6],html:[7,4],zope:8,document:[2,0,6,7,4],breakdown:[],http:[0,1,2,3,4,5,6,7,8,9],driven:[3,1],extern:6,typic:3,appropri:[3,1],eleg:6,well:[2,6],coreport:4,exampl:[2,3,7,4],thi:[2,3,4,5,6,9],self:[2,3,4,5,7,8,9],latest:7,test1:5,test2:5,just:[2,3,4,5,6,8,9],excel:6,rest:[2,0,6,3],change404to503filt:8,test_content_yaml:4,yet:6,languag:6,web:[0,6,3,7,4],test_content_catch_al:4,except:6,getal:3,blog:6,add:[0,6,8],book:6,input:[6,8],app:[3,8,4],match:1,take:[6,3],real:4,applic:[0,2,3,4,5,6],around:8,format:[2,6],read:6,irequestfilt:8,howto:[6,4],piec:4,realiz:6,like:[2,6,3],specif:7,filterrequest:8,test_get_resourc:4,either:[6,8],popular:7,output:[2,8],page:[],childid:7,www:7,some:6,back:2,sampl:[3,4],server:[6,1],librari:6,kei:[],getcustom:3,micro:[0,6],peticola:6,outgo:8,unit:4,test_xml:5,complic:6,localhost:2,core:[6,4],object:[0,3,4,5,6,7],run:[3,8,4],power:6,"enum":[7,4],restservic:4,alreadyexistsexcept:3,async:[9,6],"__name__":[3,4],post:[1,2,3,4,5,7],actual:1,constructor:8,other:6,own:6,effici:6,application_json:4,encod:[2,0],automat:[2,5,6,4],wrap:[3,8],your:4,invoiceid:3,val:5,support:[0,2,4,5,8,9],payment:3,avail:7,reli:6,interfac:8,low:6,"function":[9,1,4],returnvalu:9,form:[2,0,7],streetnam:3,inlin:6,"true":7,"default":[5,1],page_id:6,caller:5,asynchron:[0,6,9],below:2,similar:6,featur:[0,6],creat:[6,3,1],"int":[7,4],customerrestservic:3,twist:[0,6,3,9,4],exist:[3,4],curl:2,krondo:6,when:4,elementtre:5,field:7,valid:[2,0,3,1,7],test:4,you:[2,3,4,6,8,9],node:[2,0,6],matur:6,mediatyp:4,"class":[6,3,7,8,4],sql:6,text_yaml:4,understand:6,invoic:3},objtypes:{},titles:["CorePost","HTTP codes","Argument parsing","Modular REST applications","URL Routing","Content types","Introduction","Argument validation","Filters","Asynchronous Operations"],objnames:{},filenames:["index","http_codes","argument_parsing","modules","url_routing","content_types","intro","arguments","filters","async"]}) Search.setIndex({objects:{},terms:{all:[2,3],code:[0,1,4,5,6,8],partial:5,queri:[2,0,7,9],formencod:7,iresponsefilt:8,follow:8,children:2,rootid:7,depend:5,received_head:[8,4],readabl:6,specif:7,under:6,string:[5,4],veri:6,level:6,list:[7,8],localhost:2,small:3,pleas:7,enterpris:6,fortun:6,abil:6,direct:2,design:6,pass:[2,8,4],val2:9,val1:9,phoneid:3,index:[],what:[0,6],savecustom:3,abl:1,current:[6,4],delet:[3,1],intarg:4,filterrespons:8,method:[2,9,6,1,4],can:[2,3,4,5,7,8],full:3,restservic:4,gener:2,here:3,bodi:5,modular:[0,3],intercept:8,let:[2,6],floatarg:4,address:3,path:[0,3,4],statecod:3,valu:8,convert:[5,0,4],convers:6,extrem:6,chang:8,via:[7,8,4],activ:8,modul:7,countrycod:3,api:6,select:9,regex:7,from:[1,2,3,4,6,7],would:[2,0,6,4],two:[3,8],handler:6,call:5,value2:7,value1:7,recommend:6,type:[2,0,5,8,4],more:6,desir:4,test_yaml:5,phone:3,indic:[],particular:6,known:6,effort:2,customerid:3,content_typ:4,postvalidateschema:7,focu:6,del:3,thin:6,root:[2,9,8,4],def:[2,3,4,5,7,8,9],defer:[0,6,9],tap:4,give:6,accept:5,want:9,multipl:[],write:[6,3,4],how:6,instead:[2,0,6,5],simpl:4,product:[6,4],resourc:[3,8],befor:6,mesh:3,end:3,httpheader:4,tutori:6,seriou:6,element:[2,3],callback:6,allow:[3,8],first:2,order:[3,8],vari:2,dynam:[3,4],entiti:3,yaml:[2,0,6,5],jit:6,main:2,easier:6,them:[2,3,8,4],application_json:4,"return":[1,2,3,4,5,7,8],python:[5,0,6],nation:7,underneath:2,framework:[0,6],introduct:[0,6],name:2,trac:6,easili:4,wraparoundfilt:8,side:6,status:8,hard:6,expect:[2,0,5,4],paymentid:3,extract:[2,0,4],network:6,develop:6,crucial:6,content:[2,0,5,4],restresourc:[3,8,4],deleteal:3,test_content_app_json:4,integr:[5,7],standard:9,pleasant:6,base:[5,1,4],put:[2,5,3,1,4],org:7,care:[6,3],addressid:3,could:2,filter:[0,6,8],router:[2,4],principl:6,interact:6,testschema:7,oper:[0,6,9],note:4,blown:3,grade:6,onc:6,lastnam:3,test_json:5,getallcustom:3,hook:4,miss:1,hood:6,differ:[3,4],addcustomheaderfilt:8,getcustomeraddress:3,customeraddress:3,top:[0,6],system:6,least:6,attach:5,conveni:4,schema:7,customeraddressrestservic:3,specifi:7,pars:[2,0,6,5],streetnumb:3,mostli:6,than:6,john:2,instanc:8,provid:6,structur:3,sai:2,ani:[2,6,1],packag:7,have:[2,3],"__main__":[3,4],need:8,inlinecallback:[0,9],test_return_content_by_accept:5,self:[2,3,4,5,7,8,9],especi:6,thorough:6,stringarg:4,mix:2,without:2,take:[6,3],which:[6,3],noth:6,singl:[2,3],simplifi:6,importantli:6,deletecustom:3,regular:3,why:[0,6],url:[5,0,3,1,4],request:[0,2,3,4,5,6,7,8,9],doe:[2,0,6],test_content_xml:4,runtim:6,wildcard:4,numericid:4,somewhat:6,show:4,text:[2,5],xml:[2,0,6,5],onli:2,just:[2,3,4,5,6,8,9],solut:6,plumb:6,should:6,busi:[6,3],meant:6,get:[1,2,3,4,6,8,9],pypi:6,requir:[2,6],run_filter_app:8,change404to503filt:8,yield:9,"default":[5,1],common:[6,7],deleteallcustom:3,where:3,valid:[2,0,3,1,7],respond:2,dump:5,see:[2,7],mandatori:1,respons:[2,5,6,3,8],fail:1,extend:3,hopefulli:6,databas:6,behind:6,"import":[3,7,4],paramet:[2,3,8],approach:6,attribut:2,parent:3,addit:2,both:8,last:2,howev:6,test_content_catch_al:4,etc:[3,4],text_xml:4,logic:6,pdf:6,com:[6,4],simpli:6,header:8,guid:6,coupl:6,json:[2,0,6,5],much:6,basic:[2,6,4],search:[],argument:[2,0,1,7,4],notfoundexcept:3,dave:6,run_rest_app:3,child:[2,3],those:2,"case":[2,3],look:2,tostr:5,servic:[6,3,8],"while":6,abov:[2,3],error:1,fun:6,exist:[3,4],layer:6,twistedmatrix:[6,4],tabl:[],henc:[2,6],toolkit:6,kwarg:[2,4,5,7,8,9],myapp:7,postvalidatecustom:7,incom:[5,0,8,4],twistd:4,decor:[0,4],allow_extra_field:7,perform:6,make:6,same:[2,4],handl:[2,6],html:[7,4],zope:8,document:[2,0,6,7,4],breakdown:[],http:[0,1,2,3,4,5,6,7,8,9],driven:[3,1],extern:6,typic:3,appropri:[3,1],eleg:6,well:[2,6],coreport:4,exampl:[2,3,7,4],thi:[2,3,4,5,6,9],rout:[0,3,4,5,6,7,8,9],latest:7,test1:5,test2:5,firstnam:3,when:4,rest:[2,0,6,3],filterapp:8,test_content_yaml:4,yet:6,languag:6,web:[0,6,3,7,4],application_xml:4,except:6,getal:3,blog:6,add:[0,6,8],book:6,input:[6,8],app:[3,8,4],match:1,build:6,real:4,applic:[0,2,3,4,5,6],around:8,format:[2,6],read:6,irequestfilt:8,howto:[6,4],piec:4,realiz:6,like:[2,6,3],success:1,filterrequest:8,test_get_resourc:4,either:[6,8],popular:7,output:[2,8],page:[],childid:7,www:7,some:6,back:2,sampl:[3,4],server:[6,1],librari:6,kei:[],getcustom:3,micro:[0,6],peticola:6,outgo:8,unit:4,test_xml:5,complic:6,getnam:2,core:[6,4],object:[0,3,4,5,6,7],run:[3,8,4],power:6,payment:3,"enum":[7,4],usag:6,alreadyexistsexcept:3,async:[9,6],"__name__":[3,4],post:[1,2,3,4,5,7],actual:1,constructor:8,other:6,own:6,effici:6,"float":4,encod:[2,0],automat:[2,5,6,4],wrap:[3,8],your:4,invoiceid:3,val:5,support:[0,2,4,5,8,9],custom:[6,3,7,8],avail:7,reli:6,interfac:8,low:6,"function":[9,1,4],returnvalu:9,form:[2,0,7],streetnam:3,inlin:6,"true":7,whether:5,page_id:6,caller:5,asynchron:[0,6,9],below:2,similar:6,featur:[0,6],creat:[6,3,1],"int":[7,4],customerrestservic:3,twist:[0,6,3,9,4],implement:[3,7,8],curl:2,krondo:6,excel:6,elementtre:5,field:7,corepost:[0,1,2,3,4,5,6,7,8],test:4,you:[2,3,4,6,8,9],node:[2,0,6],matur:6,mediatyp:4,"class":[6,3,7,8,4],sql:6,text_yaml:4,understand:6,invoic:3},objtypes:{},titles:["CorePost","HTTP codes","Argument parsing","Modular REST applications","URL Routing","Content types","Introduction","Argument validation","Filters","Asynchronous Operations"],objnames:{},filenames:["index","http_codes","argument_parsing","modules","url_routing","content_types","intro","arguments","filters","async"]})
\ No newline at end of file \ No newline at end of file
This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2012.2.29) 19 MAR 2012 13:29 This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian) (format=pdflatex 2012.2.29) 19 MAR 2012 13:56
entering extended mode entering extended mode
%&-line parsing enabled. %&-line parsing enabled.
**CorePost.tex **CorePost.tex
......
Search.setIndex({objects:{},terms:{all:[2,3],code:[0,1,4,5,6,8],partial:5,queri:[2,0,7,9],formencod:7,abil:6,follow:8,children:2,rootid:7,depend:5,received_head:[8,4],readabl:6,under:6,string:[5,4],veri:6,implement:[3,7,8],level:6,list:[7,8],getnam:2,small:3,corepost:[0,1,2,3,4,5,6,7,8],pleas:7,enterpris:6,fortun:6,iresponsefilt:8,direct:2,design:6,pass:[2,8,4],val2:9,val1:9,phoneid:3,index:[],what:[0,6],savecustom:3,abl:1,current:[6,4],delet:[3,1],intarg:4,filterrespons:8,method:[2,9,6,1,4],can:[2,3,4,5,7,8],full:3,usag:6,gener:2,here:3,bodi:5,modular:[0,3],intercept:8,let:[2,6],floatarg:4,address:3,path:[0,3,4],statecod:3,valu:8,convert:[5,0,4],convers:6,extrem:6,chang:8,via:[7,8,4],solut:6,modul:7,countrycod:3,api:6,select:9,regex:7,from:[1,2,3,4,6,7],would:[2,0,6,4],two:[3,8],handler:6,call:5,value2:7,value1:7,recommend:6,type:[2,0,5,8,4],more:6,desir:4,test_yaml:5,phone:3,indic:[],particular:6,known:6,effort:2,customerid:3,content_typ:4,postvalidateschema:7,focu:6,del:3,thin:6,root:[2,9,8,4],def:[2,3,4,5,7,8,9],defer:[0,6,9],tap:4,give:6,accept:5,want:9,multipl:[],write:[6,3,4],how:6,instead:[2,0,6,5],simpl:4,product:[6,4],resourc:[3,8],befor:6,mesh:3,end:3,httpheader:4,tutori:6,seriou:6,element:[2,3],test_return_content_by_accept:5,allow:[3,8],testschema:7,order:[3,8],vari:2,dynam:[3,4],entiti:3,yaml:[2,0,6,5],jit:6,main:2,easier:6,them:[2,3,8,4],"float":4,"return":[1,2,3,4,5,7,8],python:[5,0,6],nation:7,underneath:2,framework:[0,6],introduct:[0,6],name:2,trac:6,easili:4,wraparoundfilt:8,side:6,status:8,hard:6,expect:[2,0,5,4],paymentid:3,extract:[2,0,4],network:6,develop:6,crucial:6,content:[2,0,5,4],restresourc:[3,8,4],deleteal:3,test_content_app_json:4,integr:[5,7],standard:9,pleasant:6,base:[5,1,4],put:[2,5,3,1,4],org:7,care:[6,3],addressid:3,could:2,success:1,filter:[0,6,8],router:[2,4],principl:6,interact:6,first:2,oper:[0,6,9],note:4,blown:3,grade:6,onc:6,lastnam:3,test_json:5,getallcustom:3,hook:4,custom:[6,3,7,8],miss:1,hood:6,differ:[3,4],addcustomheaderfilt:8,dump:5,customeraddress:3,top:[0,6],system:6,least:6,attach:5,conveni:4,schema:7,customeraddressrestservic:3,specifi:7,pars:[2,0,6,5],streetnumb:3,somewhat:6,than:6,john:2,instanc:8,provid:6,structur:3,sai:2,argument:[2,0,1,7,4],packag:7,have:[2,3],tabl:[],need:8,inlinecallback:[0,9],callback:6,rout:[0,3,4,5,6,7,8,9],especi:6,thorough:6,stringarg:4,mix:2,without:2,build:6,which:[6,3],noth:6,singl:[2,3],simplifi:6,importantli:6,deletecustom:3,regular:3,why:[0,6],url:[5,0,3,1,4],request:[0,2,3,4,5,6,7,8,9],doe:[2,0,6],test_content_xml:4,runtim:6,wildcard:4,numericid:4,mostli:6,show:4,text:[2,5],xml:[2,0,6,5],onli:2,firstnam:3,activ:8,plumb:6,should:6,busi:[6,3],meant:6,get:[1,2,3,4,6,8,9],pypi:6,requir:[2,6],run_filter_app:8,filterapp:8,yield:9,whether:5,common:[6,7],deleteallcustom:3,where:3,respond:2,getcustomeraddress:3,see:[2,7],mandatori:1,respons:[2,5,6,3,8],fail:1,parent:3,hopefulli:6,databas:6,behind:6,"import":[3,7,4],paramet:[2,3,8],approach:6,attribut:2,extend:3,addit:2,both:8,last:2,howev:6,application_xml:4,etc:[3,4],text_xml:4,logic:6,pdf:6,com:[6,4],simpli:6,header:8,guid:6,coupl:6,json:[2,0,6,5],much:6,basic:[2,6,4],search:[],ani:[2,6,1],notfoundexcept:3,dave:6,run_rest_app:3,child:[2,3],those:2,"case":[2,3],look:2,tostr:5,servic:[6,3,8],"while":6,abov:[2,3],error:1,fun:6,layer:6,twistedmatrix:[6,4],"__main__":[3,4],henc:[2,6],toolkit:6,kwarg:[2,4,5,7,8,9],myapp:7,postvalidatecustom:7,incom:[5,0,8,4],twistd:4,decor:[0,4],allow_extra_field:7,perform:6,make:6,same:[2,4],handl:[2,6],html:[7,4],zope:8,document:[2,0,6,7,4],breakdown:[],http:[0,1,2,3,4,5,6,7,8,9],driven:[3,1],extern:6,typic:3,appropri:[3,1],eleg:6,well:[2,6],coreport:4,exampl:[2,3,7,4],thi:[2,3,4,5,6,9],self:[2,3,4,5,7,8,9],latest:7,test1:5,test2:5,just:[2,3,4,5,6,8,9],excel:6,rest:[2,0,6,3],change404to503filt:8,test_content_yaml:4,yet:6,languag:6,web:[0,6,3,7,4],test_content_catch_al:4,except:6,getal:3,blog:6,add:[0,6,8],book:6,input:[6,8],app:[3,8,4],match:1,take:[6,3],real:4,applic:[0,2,3,4,5,6],around:8,format:[2,6],read:6,irequestfilt:8,howto:[6,4],piec:4,realiz:6,like:[2,6,3],specif:7,filterrequest:8,test_get_resourc:4,either:[6,8],popular:7,output:[2,8],page:[],childid:7,www:7,some:6,back:2,sampl:[3,4],server:[6,1],librari:6,kei:[],getcustom:3,micro:[0,6],peticola:6,outgo:8,unit:4,test_xml:5,complic:6,localhost:2,core:[6,4],object:[0,3,4,5,6,7],run:[3,8,4],power:6,"enum":[7,4],restservic:4,alreadyexistsexcept:3,async:[9,6],"__name__":[3,4],post:[1,2,3,4,5,7],actual:1,constructor:8,other:6,own:6,effici:6,application_json:4,encod:[2,0],automat:[2,5,6,4],wrap:[3,8],your:4,invoiceid:3,val:5,support:[0,2,4,5,8,9],payment:3,avail:7,reli:6,interfac:8,low:6,"function":[9,1,4],returnvalu:9,form:[2,0,7],streetnam:3,inlin:6,"true":7,"default":[5,1],page_id:6,caller:5,asynchron:[0,6,9],below:2,similar:6,featur:[0,6],creat:[6,3,1],"int":[7,4],customerrestservic:3,twist:[0,6,3,9,4],exist:[3,4],curl:2,krondo:6,when:4,elementtre:5,field:7,valid:[2,0,3,1,7],test:4,you:[2,3,4,6,8,9],node:[2,0,6],matur:6,mediatyp:4,"class":[6,3,7,8,4],sql:6,text_yaml:4,understand:6,invoic:3},objtypes:{},titles:["CorePost","HTTP codes","Argument parsing","Modular REST applications","URL Routing","Content types","Introduction","Argument validation","Filters","Asynchronous Operations"],objnames:{},filenames:["index","http_codes","argument_parsing","modules","url_routing","content_types","intro","arguments","filters","async"]}) Search.setIndex({objects:{},terms:{all:[2,3],code:[0,1,4,5,6,8],partial:5,queri:[2,0,7,9],formencod:7,iresponsefilt:8,follow:8,children:2,rootid:7,depend:5,received_head:[8,4],readabl:6,specif:7,under:6,string:[5,4],veri:6,level:6,list:[7,8],localhost:2,small:3,pleas:7,enterpris:6,fortun:6,abil:6,direct:2,design:6,pass:[2,8,4],val2:9,val1:9,phoneid:3,index:[],what:[0,6],savecustom:3,abl:1,current:[6,4],delet:[3,1],intarg:4,filterrespons:8,method:[2,9,6,1,4],can:[2,3,4,5,7,8],full:3,restservic:4,gener:2,here:3,bodi:5,modular:[0,3],intercept:8,let:[2,6],floatarg:4,address:3,path:[0,3,4],statecod:3,valu:8,convert:[5,0,4],convers:6,extrem:6,chang:8,via:[7,8,4],activ:8,modul:7,countrycod:3,api:6,select:9,regex:7,from:[1,2,3,4,6,7],would:[2,0,6,4],two:[3,8],handler:6,call:5,value2:7,value1:7,recommend:6,type:[2,0,5,8,4],more:6,desir:4,test_yaml:5,phone:3,indic:[],particular:6,known:6,effort:2,customerid:3,content_typ:4,postvalidateschema:7,focu:6,del:3,thin:6,root:[2,9,8,4],def:[2,3,4,5,7,8,9],defer:[0,6,9],tap:4,give:6,accept:5,want:9,multipl:[],write:[6,3,4],how:6,instead:[2,0,6,5],simpl:4,product:[6,4],resourc:[3,8],befor:6,mesh:3,end:3,httpheader:4,tutori:6,seriou:6,element:[2,3],callback:6,allow:[3,8],first:2,order:[3,8],vari:2,dynam:[3,4],entiti:3,yaml:[2,0,6,5],jit:6,main:2,easier:6,them:[2,3,8,4],application_json:4,"return":[1,2,3,4,5,7,8],python:[5,0,6],nation:7,underneath:2,framework:[0,6],introduct:[0,6],name:2,trac:6,easili:4,wraparoundfilt:8,side:6,status:8,hard:6,expect:[2,0,5,4],paymentid:3,extract:[2,0,4],network:6,develop:6,crucial:6,content:[2,0,5,4],restresourc:[3,8,4],deleteal:3,test_content_app_json:4,integr:[5,7],standard:9,pleasant:6,base:[5,1,4],put:[2,5,3,1,4],org:7,care:[6,3],addressid:3,could:2,filter:[0,6,8],router:[2,4],principl:6,interact:6,testschema:7,oper:[0,6,9],note:4,blown:3,grade:6,onc:6,lastnam:3,test_json:5,getallcustom:3,hook:4,miss:1,hood:6,differ:[3,4],addcustomheaderfilt:8,getcustomeraddress:3,customeraddress:3,top:[0,6],system:6,least:6,attach:5,conveni:4,schema:7,customeraddressrestservic:3,specifi:7,pars:[2,0,6,5],streetnumb:3,mostli:6,than:6,john:2,instanc:8,provid:6,structur:3,sai:2,ani:[2,6,1],packag:7,have:[2,3],"__main__":[3,4],need:8,inlinecallback:[0,9],test_return_content_by_accept:5,self:[2,3,4,5,7,8,9],especi:6,thorough:6,stringarg:4,mix:2,without:2,take:[6,3],which:[6,3],noth:6,singl:[2,3],simplifi:6,importantli:6,deletecustom:3,regular:3,why:[0,6],url:[5,0,3,1,4],request:[0,2,3,4,5,6,7,8,9],doe:[2,0,6],test_content_xml:4,runtim:6,wildcard:4,numericid:4,somewhat:6,show:4,text:[2,5],xml:[2,0,6,5],onli:2,just:[2,3,4,5,6,8,9],solut:6,plumb:6,should:6,busi:[6,3],meant:6,get:[1,2,3,4,6,8,9],pypi:6,requir:[2,6],run_filter_app:8,change404to503filt:8,yield:9,"default":[5,1],common:[6,7],deleteallcustom:3,where:3,valid:[2,0,3,1,7],respond:2,dump:5,see:[2,7],mandatori:1,respons:[2,5,6,3,8],fail:1,extend:3,hopefulli:6,databas:6,behind:6,"import":[3,7,4],paramet:[2,3,8],approach:6,attribut:2,parent:3,addit:2,both:8,last:2,howev:6,test_content_catch_al:4,etc:[3,4],text_xml:4,logic:6,pdf:6,com:[6,4],simpli:6,header:8,guid:6,coupl:6,json:[2,0,6,5],much:6,basic:[2,6,4],search:[],argument:[2,0,1,7,4],notfoundexcept:3,dave:6,run_rest_app:3,child:[2,3],those:2,"case":[2,3],look:2,tostr:5,servic:[6,3,8],"while":6,abov:[2,3],error:1,fun:6,exist:[3,4],layer:6,twistedmatrix:[6,4],tabl:[],henc:[2,6],toolkit:6,kwarg:[2,4,5,7,8,9],myapp:7,postvalidatecustom:7,incom:[5,0,8,4],twistd:4,decor:[0,4],allow_extra_field:7,perform:6,make:6,same:[2,4],handl:[2,6],html:[7,4],zope:8,document:[2,0,6,7,4],breakdown:[],http:[0,1,2,3,4,5,6,7,8,9],driven:[3,1],extern:6,typic:3,appropri:[3,1],eleg:6,well:[2,6],coreport:4,exampl:[2,3,7,4],thi:[2,3,4,5,6,9],rout:[0,3,4,5,6,7,8,9],latest:7,test1:5,test2:5,firstnam:3,when:4,rest:[2,0,6,3],filterapp:8,test_content_yaml:4,yet:6,languag:6,web:[0,6,3,7,4],application_xml:4,except:6,getal:3,blog:6,add:[0,6,8],book:6,input:[6,8],app:[3,8,4],match:1,build:6,real:4,applic:[0,2,3,4,5,6],around:8,format:[2,6],read:6,irequestfilt:8,howto:[6,4],piec:4,realiz:6,like:[2,6,3],success:1,filterrequest:8,test_get_resourc:4,either:[6,8],popular:7,output:[2,8],page:[],childid:7,www:7,some:6,back:2,sampl:[3,4],server:[6,1],librari:6,kei:[],getcustom:3,micro:[0,6],peticola:6,outgo:8,unit:4,test_xml:5,complic:6,getnam:2,core:[6,4],object:[0,3,4,5,6,7],run:[3,8,4],power:6,payment:3,"enum":[7,4],usag:6,alreadyexistsexcept:3,async:[9,6],"__name__":[3,4],post:[1,2,3,4,5,7],actual:1,constructor:8,other:6,own:6,effici:6,"float":4,encod:[2,0],automat:[2,5,6,4],wrap:[3,8],your:4,invoiceid:3,val:5,support:[0,2,4,5,8,9],custom:[6,3,7,8],avail:7,reli:6,interfac:8,low:6,"function":[9,1,4],returnvalu:9,form:[2,0,7],streetnam:3,inlin:6,"true":7,whether:5,page_id:6,caller:5,asynchron:[0,6,9],below:2,similar:6,featur:[0,6],creat:[6,3,1],"int":[7,4],customerrestservic:3,twist:[0,6,3,9,4],implement:[3,7,8],curl:2,krondo:6,excel:6,elementtre:5,field:7,corepost:[0,1,2,3,4,5,6,7,8],test:4,you:[2,3,4,6,8,9],node:[2,0,6],matur:6,mediatyp:4,"class":[6,3,7,8,4],sql:6,text_yaml:4,understand:6,invoic:3},objtypes:{},titles:["CorePost","HTTP codes","Argument parsing","Modular REST applications","URL Routing","Content types","Introduction","Argument validation","Filters","Asynchronous Operations"],objnames:{},filenames:["index","http_codes","argument_parsing","modules","url_routing","content_types","intro","arguments","filters","async"]})
\ No newline at end of file \ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment