Files
responder/api.html
T
2026-03-22 16:48:27 +00:00

716 lines
74 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>API Documentation &#8212; responder 3.2.0 documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=5ecbeea2" />
<link rel="stylesheet" type="text/css" href="_static/basic.css?v=b08954a9" />
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=27fed22d" />
<link rel="stylesheet" type="text/css" href="_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="_static/design-elements.e5416f61bae5d36adc6d722a2b6f8cff.css?v=452a8e97" />
<script src="_static/documentation_options.js?v=4f6ddb47"></script>
<script src="_static/doctools.js?v=9bcbadda"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="_static/clipboard.min.js?v=a7894cd8"></script>
<script src="_static/copybutton.js?v=fd10adb8"></script>
<script>
</script>
<script src="_static/design-elements.bbdccc18c4abea9397628f9fea3d48c2.js?v=03c7770e"></script>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Responder CLI" href="cli.html" />
<link rel="prev" title="Testing" href="testing.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="api-documentation">
<h1>API Documentation<a class="headerlink" href="#api-documentation" title="Link to this heading"></a></h1>
<section id="module-responder">
<span id="web-service-api-class"></span><h2>Web Service (API) Class<a class="headerlink" href="#module-responder" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="responder.API">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">responder.</span></span><span class="sig-name descname"><span class="pre">API</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">debug</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">title</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">version</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">description</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">terms_of_service</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">contact</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">license</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">openapi</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">openapi_route</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'/schema.yml'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_dir</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'static'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static_route</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'/static'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">templates_dir</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'templates'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">auto_escape</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">secret_key</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'NOTASECRET'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">enable_hsts</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">docs_route</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cors</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cors_params</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">{'allow_credentials':</span> <span class="pre">False,</span> <span class="pre">'allow_headers':</span> <span class="pre">(),</span> <span class="pre">'allow_methods':</span> <span class="pre">('GET',),</span> <span class="pre">'allow_origin_regex':</span> <span class="pre">None,</span> <span class="pre">'allow_origins':</span> <span class="pre">(),</span> <span class="pre">'expose_headers':</span> <span class="pre">(),</span> <span class="pre">'max_age':</span> <span class="pre">600}</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">allowed_hosts</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">openapi_theme</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'swagger_ui'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">lifespan</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">request_id</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API" title="Link to this definition"></a></dt>
<dd><p>The primary web-service class.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>static_dir</strong> The directory to use for static files. Will be created for you if it doesnt already exist.</p></li>
<li><p><strong>templates_dir</strong> The directory to use for templates. Will be created for you if it doesnt already exist.</p></li>
<li><p><strong>auto_escape</strong> If <code class="docutils literal notranslate"><span class="pre">True</span></code>, HTML and XML templates will automatically be escaped.</p></li>
<li><p><strong>enable_hsts</strong> If <code class="docutils literal notranslate"><span class="pre">True</span></code>, send all responses to HTTPS URLs.</p></li>
<li><p><strong>openapi_theme</strong> OpenAPI documentation theme, must be one of <code class="docutils literal notranslate"><span class="pre">elements</span></code>, <code class="docutils literal notranslate"><span class="pre">rapidoc</span></code>, <code class="docutils literal notranslate"><span class="pre">redoc</span></code>, <code class="docutils literal notranslate"><span class="pre">swagger_ui</span></code></p></li>
</ul>
</dd>
</dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.add_event_handler">
<span class="sig-name descname"><span class="pre">add_event_handler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">event_type</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">handler</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.add_event_handler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.add_event_handler" title="Link to this definition"></a></dt>
<dd><p>Adds an event handler to the API.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>event_type</strong> A string in (“startup”, “shutdown”)</p></li>
<li><p><strong>handler</strong> The function to run. Can be either a function or a coroutine.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.add_route">
<span class="sig-name descname"><span class="pre">add_route</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">route</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">endpoint</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">default</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">static</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">check_existing</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">websocket</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">before_request</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">methods</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.add_route"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.add_route" title="Link to this definition"></a></dt>
<dd><p>Adds a route to the API.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>route</strong> A string representation of the route.</p></li>
<li><p><strong>endpoint</strong> The endpoint for the route can be a callable, or a class.</p></li>
<li><p><strong>default</strong> If <code class="docutils literal notranslate"><span class="pre">True</span></code>, all unknown requests will route to this view.</p></li>
<li><p><strong>static</strong> If <code class="docutils literal notranslate"><span class="pre">True</span></code>, and no endpoint was passed, render “static/index.html”.
Also, it will become a default route.</p></li>
<li><p><strong>methods</strong> Optional list of HTTP methods (e.g. <code class="docutils literal notranslate"><span class="pre">[&quot;GET&quot;,</span> <span class="pre">&quot;POST&quot;]</span></code>).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.after_request">
<span class="sig-name descname"><span class="pre">after_request</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.after_request"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.after_request" title="Link to this definition"></a></dt>
<dd><p>Register a function to run after every request.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@api</span><span class="o">.</span><span class="n">after_request</span><span class="p">()</span>
<span class="k">def</span><span class="w"> </span><span class="nf">add_request_id</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">):</span>
<span class="n">resp</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s2">&quot;X-Request-ID&quot;</span><span class="p">]</span> <span class="o">=</span> <span class="nb">str</span><span class="p">(</span><span class="n">uuid</span><span class="o">.</span><span class="n">uuid4</span><span class="p">())</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.exception_handler">
<span class="sig-name descname"><span class="pre">exception_handler</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">exception_cls</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.exception_handler"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.exception_handler" title="Link to this definition"></a></dt>
<dd><p>Register a handler for a specific exception type.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@api</span><span class="o">.</span><span class="n">exception_handler</span><span class="p">(</span><span class="ne">ValueError</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">handle_value_error</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">,</span> <span class="n">exc</span><span class="p">):</span>
<span class="n">resp</span><span class="o">.</span><span class="n">status_code</span> <span class="o">=</span> <span class="mi">400</span>
<span class="n">resp</span><span class="o">.</span><span class="n">media</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;error&quot;</span><span class="p">:</span> <span class="nb">str</span><span class="p">(</span><span class="n">exc</span><span class="p">)}</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.graphql">
<span class="sig-name descname"><span class="pre">graphql</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">route</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'/graphql'</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">schema</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.graphql"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.graphql" title="Link to this definition"></a></dt>
<dd><p>Mount a GraphQL API at the given route.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">graphene</span>
<span class="k">class</span><span class="w"> </span><span class="nc">Query</span><span class="p">(</span><span class="n">graphene</span><span class="o">.</span><span class="n">ObjectType</span><span class="p">):</span>
<span class="n">hello</span> <span class="o">=</span> <span class="n">graphene</span><span class="o">.</span><span class="n">String</span><span class="p">(</span><span class="n">name</span><span class="o">=</span><span class="n">graphene</span><span class="o">.</span><span class="n">String</span><span class="p">(</span><span class="n">default_value</span><span class="o">=</span><span class="s2">&quot;stranger&quot;</span><span class="p">))</span>
<span class="k">def</span><span class="w"> </span><span class="nf">resolve_hello</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">info</span><span class="p">,</span> <span class="n">name</span><span class="p">):</span>
<span class="k">return</span> <span class="sa">f</span><span class="s2">&quot;Hello </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">&quot;</span>
<span class="n">api</span><span class="o">.</span><span class="n">graphql</span><span class="p">(</span><span class="s2">&quot;/graphql&quot;</span><span class="p">,</span> <span class="n">schema</span><span class="o">=</span><span class="n">graphene</span><span class="o">.</span><span class="n">Schema</span><span class="p">(</span><span class="n">query</span><span class="o">=</span><span class="n">Query</span><span class="p">))</span>
</pre></div>
</div>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>route</strong> The URL path for the GraphQL endpoint.</p></li>
<li><p><strong>schema</strong> A Graphene schema instance.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.group">
<span class="sig-name descname"><span class="pre">group</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">prefix</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.group"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.group" title="Link to this definition"></a></dt>
<dd><p>Create a route group with a shared URL prefix.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">v1</span> <span class="o">=</span> <span class="n">api</span><span class="o">.</span><span class="n">group</span><span class="p">(</span><span class="s2">&quot;/v1&quot;</span><span class="p">)</span>
<span class="nd">@v1</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/users&quot;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">list_users</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">):</span>
<span class="n">resp</span><span class="o">.</span><span class="n">media</span> <span class="o">=</span> <span class="p">[]</span>
<span class="nd">@v1</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/users/{id:int}&quot;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">get_user</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">,</span> <span class="o">*</span><span class="p">,</span> <span class="nb">id</span><span class="p">):</span>
<span class="n">resp</span><span class="o">.</span><span class="n">media</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;id&quot;</span><span class="p">:</span> <span class="nb">id</span><span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.mount">
<span class="sig-name descname"><span class="pre">mount</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">route</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">app</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.mount"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.mount" title="Link to this definition"></a></dt>
<dd><p>Mounts an WSGI / ASGI application at a given route.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>route</strong> String representation of the route to be used
(shouldnt be parameterized).</p></li>
<li><p><strong>app</strong> The other WSGI / ASGI app.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.on_event">
<span class="sig-name descname"><span class="pre">on_event</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">event_type</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">args</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.on_event"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.on_event" title="Link to this definition"></a></dt>
<dd><p>Decorator for registering functions or coroutines to run at certain events
Supported events: startup, shutdown</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@api</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s1">&#39;startup&#39;</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">open_database_connection_pool</span><span class="p">():</span>
<span class="o">...</span>
<span class="nd">@api</span><span class="o">.</span><span class="n">on_event</span><span class="p">(</span><span class="s1">&#39;shutdown&#39;</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">close_database_connection_pool</span><span class="p">():</span>
<span class="o">...</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.path_matches_route">
<span class="sig-name descname"><span class="pre">path_matches_route</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.path_matches_route"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.path_matches_route" title="Link to this definition"></a></dt>
<dd><p>Given a path portion of a URL, tests that it matches against any registered route.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>path</strong> The path portion of a URL, to test all known routes against.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.redirect">
<span class="sig-name descname"><span class="pre">redirect</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">resp</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">location</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">set_text</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">status_code</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">301</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.redirect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.redirect" title="Link to this definition"></a></dt>
<dd><p>Redirects a given response to a given location.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>resp</strong> The Response to mutate.</p></li>
<li><p><strong>location</strong> The location of the redirect.</p></li>
<li><p><strong>set_text</strong> If <code class="docutils literal notranslate"><span class="pre">True</span></code>, sets the Redirect body content automatically.</p></li>
<li><p><strong>status_code</strong> an <cite>API.status_codes</cite> attribute, or an integer,
representing the HTTP status code of the redirect.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.API.requests">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">requests</span></span><a class="headerlink" href="#responder.API.requests" title="Link to this definition"></a></dt>
<dd><p>A test client connected to the ASGI app. Lazily initialized.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.route">
<span class="sig-name descname"><span class="pre">route</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">route</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">request_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">response_model</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">options</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.route"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.route" title="Link to this definition"></a></dt>
<dd><p>Decorator for creating new routes around function and class definitions.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@api</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/hello&quot;</span><span class="p">)</span>
<span class="k">def</span><span class="w"> </span><span class="nf">hello</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">):</span>
<span class="n">resp</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">&quot;hello, world!&quot;</span>
</pre></div>
</div>
<p>With Pydantic models for OpenAPI documentation:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">pydantic</span><span class="w"> </span><span class="kn">import</span> <span class="n">BaseModel</span>
<span class="k">class</span><span class="w"> </span><span class="nc">ItemIn</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">price</span><span class="p">:</span> <span class="nb">float</span>
<span class="k">class</span><span class="w"> </span><span class="nc">ItemOut</span><span class="p">(</span><span class="n">BaseModel</span><span class="p">):</span>
<span class="nb">id</span><span class="p">:</span> <span class="nb">int</span>
<span class="n">name</span><span class="p">:</span> <span class="nb">str</span>
<span class="n">price</span><span class="p">:</span> <span class="nb">float</span>
<span class="nd">@api</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/items&quot;</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;POST&quot;</span><span class="p">],</span>
<span class="n">request_model</span><span class="o">=</span><span class="n">ItemIn</span><span class="p">,</span> <span class="n">response_model</span><span class="o">=</span><span class="n">ItemOut</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">create_item</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">):</span>
<span class="n">data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">req</span><span class="o">.</span><span class="n">media</span><span class="p">()</span>
<span class="n">resp</span><span class="o">.</span><span class="n">media</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&quot;id&quot;</span><span class="p">:</span> <span class="mi">1</span><span class="p">,</span> <span class="o">**</span><span class="n">data</span><span class="p">}</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.schema">
<span class="sig-name descname"><span class="pre">schema</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">name</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">options</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.schema"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.schema" title="Link to this definition"></a></dt>
<dd><p>Decorator for creating new routes around function and class definitions.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">marshmallow</span><span class="w"> </span><span class="kn">import</span> <span class="n">Schema</span><span class="p">,</span> <span class="n">fields</span>
<span class="nd">@api</span><span class="o">.</span><span class="n">schema</span><span class="p">(</span><span class="s2">&quot;Pet&quot;</span><span class="p">)</span>
<span class="k">class</span><span class="w"> </span><span class="nc">PetSchema</span><span class="p">(</span><span class="n">Schema</span><span class="p">):</span>
<span class="n">name</span> <span class="o">=</span> <span class="n">fields</span><span class="o">.</span><span class="n">Str</span><span class="p">()</span>
</pre></div>
</div>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.serve">
<span class="sig-name descname"><span class="pre">serve</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">address</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">port</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">debug</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">options</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.serve"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.serve" title="Link to this definition"></a></dt>
<dd><p>Run the application with uvicorn.</p>
<p>If the <code class="docutils literal notranslate"><span class="pre">PORT</span></code> environment variable is set, requests will be served on that port
automatically to all known hosts.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>address</strong> The address to bind to.</p></li>
<li><p><strong>port</strong> The port to bind to. If none is provided, one will be selected at random.</p></li>
<li><p><strong>debug</strong> Whether to run application in debug mode.</p></li>
<li><p><strong>options</strong> Additional keyword arguments to send to <code class="docutils literal notranslate"><span class="pre">uvicorn.run()</span></code>.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.session">
<span class="sig-name descname"><span class="pre">session</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">base_url</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'http://;'</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.session"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.session" title="Link to this definition"></a></dt>
<dd><p>Testing HTTP client. Returns a Starlette TestClient instance,
able to send HTTP requests to the Responder application.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>base_url</strong> The base URL for the test client.</p>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.template">
<span class="sig-name descname"><span class="pre">template</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">filename</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.template"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.template" title="Link to this definition"></a></dt>
<dd><p>Render a Jinja2 template file with the provided values.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>filename</strong> The filename of the jinja2 template, in <code class="docutils literal notranslate"><span class="pre">templates_dir</span></code>.</p></li>
<li><p><strong>*args</strong> Data to pass into the template.</p></li>
<li><p><strong>**kwargs</strong> Data to pass into the template.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.template_string">
<span class="sig-name descname"><span class="pre">template_string</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">source</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.template_string"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.template_string" title="Link to this definition"></a></dt>
<dd><p>Render a Jinja2 template string with the provided values.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>source</strong> The template to use, a Jinja2 template string.</p></li>
<li><p><strong>*args</strong> Data to pass into the template.</p></li>
<li><p><strong>**kwargs</strong> Data to pass into the template.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.API.url_for">
<span class="sig-name descname"><span class="pre">url_for</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">endpoint</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">params</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.url_for"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.url_for" title="Link to this definition"></a></dt>
<dd><p>Given an endpoint, returns a rendered URL for its route.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>endpoint</strong> The route endpoint youre searching for.</p></li>
<li><p><strong>params</strong> Data to pass into the URL generator (for parameterized URLs).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<section id="requests-responses">
<h2>Requests &amp; Responses<a class="headerlink" href="#requests-responses" title="Link to this heading"></a></h2>
<dl class="py class">
<dt class="sig sig-object py" id="responder.Request">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">responder.</span></span><span class="sig-name descname"><span class="pre">Request</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">scope</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">receive</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">api</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">formats</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Request"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Request" title="Link to this definition"></a></dt>
<dd><dl class="py method">
<dt class="sig sig-object py" id="responder.Request.accepts">
<span class="sig-name descname"><span class="pre">accepts</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">content_type</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Request.accepts"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Request.accepts" title="Link to this definition"></a></dt>
<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if the incoming Request accepts the given <code class="docutils literal notranslate"><span class="pre">content_type</span></code>.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.apparent_encoding">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">apparent_encoding</span></span><a class="headerlink" href="#responder.Request.apparent_encoding" title="Link to this definition"></a></dt>
<dd><p>The apparent encoding, detected automatically. Must be awaited.</p>
<p>Uses chardet for detection if installed, otherwise falls back to UTF-8.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.client">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">client</span></span><a class="headerlink" href="#responder.Request.client" title="Link to this definition"></a></dt>
<dd><p>The clients address as a (host, port) named tuple, or None.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.content">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">content</span></span><a class="headerlink" href="#responder.Request.content" title="Link to this definition"></a></dt>
<dd><p>The Request body, as bytes. Must be awaited.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.cookies">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">cookies</span></span><a class="headerlink" href="#responder.Request.cookies" title="Link to this definition"></a></dt>
<dd><p>The cookies sent in the Request, as a dictionary.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.encoding">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">encoding</span></span><a class="headerlink" href="#responder.Request.encoding" title="Link to this definition"></a></dt>
<dd><p>The encoding of the Requests body. Can be set, manually. Must be awaited.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.full_url">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">full_url</span></span><a class="headerlink" href="#responder.Request.full_url" title="Link to this definition"></a></dt>
<dd><p>The full URL of the Request, query parameters and all.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.headers">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">headers</span></span><a class="headerlink" href="#responder.Request.headers" title="Link to this definition"></a></dt>
<dd><p>A case-insensitive dictionary, containing all headers sent in the Request.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.is_json">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">is_json</span></span><a class="headerlink" href="#responder.Request.is_json" title="Link to this definition"></a></dt>
<dd><p>Returns <code class="docutils literal notranslate"><span class="pre">True</span></code> if the request content type is JSON.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.Request.media">
<em class="property"><span class="k"><span class="pre">async</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">media</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">format</span></span><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="n"><span class="pre">str</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">Callable</span></span><span class="w"> </span><span class="o"><span class="pre">=</span></span><span class="w"> </span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Request.media"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Request.media" title="Link to this definition"></a></dt>
<dd><p>Renders incoming json/yaml/form data as Python objects. Must be awaited.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><p><strong>format</strong> The name of the format being used.
Alternatively, accepts a custom callable for the format type.</p>
</dd>
</dl>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.method">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">method</span></span><a class="headerlink" href="#responder.Request.method" title="Link to this definition"></a></dt>
<dd><p>The incoming HTTP method used for the request, lower-cased.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.params">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">params</span></span><a class="headerlink" href="#responder.Request.params" title="Link to this definition"></a></dt>
<dd><p>A dictionary of the parsed query parameters used for the Request.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.path_params">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">path_params</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">dict</span></em><a class="headerlink" href="#responder.Request.path_params" title="Link to this definition"></a></dt>
<dd><p>The path parameters extracted from the URL route.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.session">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">session</span></span><a class="headerlink" href="#responder.Request.session" title="Link to this definition"></a></dt>
<dd><p>The session data, in dict form, from the Request.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.state">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">state</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">State</span></em><a class="headerlink" href="#responder.Request.state" title="Link to this definition"></a></dt>
<dd><p>Use the state to store additional information.</p>
<p>This can be a very helpful feature, if you want to hand over
information from a middelware or a route decorator to the
actual route handler.</p>
<p>Usage: <code class="docutils literal notranslate"><span class="pre">request.state.time_started</span> <span class="pre">=</span> <span class="pre">time.time()</span></code></p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.text">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">text</span></span><a class="headerlink" href="#responder.Request.text" title="Link to this definition"></a></dt>
<dd><p>The Request body, as unicode. Must be awaited.</p>
</dd></dl>
<dl class="py property">
<dt class="sig sig-object py" id="responder.Request.url">
<em class="property"><span class="k"><span class="pre">property</span></span><span class="w"> </span></em><span class="sig-name descname"><span class="pre">url</span></span><a class="headerlink" href="#responder.Request.url" title="Link to this definition"></a></dt>
<dd><p>The parsed URL of the Request.</p>
</dd></dl>
</dd></dl>
<dl class="py class">
<dt class="sig sig-object py" id="responder.Response">
<em class="property"><span class="k"><span class="pre">class</span></span><span class="w"> </span></em><span class="sig-prename descclassname"><span class="pre">responder.</span></span><span class="sig-name descname"><span class="pre">Response</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">req</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">formats</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Response"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response" title="Link to this definition"></a></dt>
<dd><dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.content">
<span class="sig-name descname"><span class="pre">content</span></span><a class="headerlink" href="#responder.Response.content" title="Link to this definition"></a></dt>
<dd><p>A bytes representation of the response body.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.cookies">
<span class="sig-name descname"><span class="pre">cookies</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">SimpleCookie</span></em><a class="headerlink" href="#responder.Response.cookies" title="Link to this definition"></a></dt>
<dd><p>The cookies set in the Response</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.Response.file">
<span class="sig-name descname"><span class="pre">file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Response.file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response.file" title="Link to this definition"></a></dt>
<dd><p>Serve a file from disk as the response.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> Path to the file to serve.</p></li>
<li><p><strong>content_type</strong> Optional MIME type override.</p></li>
</ul>
</dd>
</dl>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.formats">
<span class="sig-name descname"><span class="pre">formats</span></span><a class="headerlink" href="#responder.Response.formats" title="Link to this definition"></a></dt>
<dd><p>representing the headers of the response.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.headers">
<span class="sig-name descname"><span class="pre">headers</span></span><a class="headerlink" href="#responder.Response.headers" title="Link to this definition"></a></dt>
<dd><p>A Python dictionary of <code class="docutils literal notranslate"><span class="pre">{key:</span> <span class="pre">value}</span></code>,</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.media">
<span class="sig-name descname"><span class="pre">media</span></span><a class="headerlink" href="#responder.Response.media" title="Link to this definition"></a></dt>
<dd><p>A Python object that will be content-negotiated and</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.session">
<span class="sig-name descname"><span class="pre">session</span></span><a class="headerlink" href="#responder.Response.session" title="Link to this definition"></a></dt>
<dd><p>The cookie-based session data, in dict form, to add to the Response.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.Response.sse">
<span class="sig-name descname"><span class="pre">sse</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">func</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">*</span></span><span class="n"><span class="pre">args</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Response.sse"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response.sse" title="Link to this definition"></a></dt>
<dd><p>Set up Server-Sent Events streaming.</p>
<p>Usage:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="nd">@api</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="s2">&quot;/events&quot;</span><span class="p">)</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">events</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">):</span>
<span class="nd">@resp</span><span class="o">.</span><span class="n">sse</span>
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stream</span><span class="p">():</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">10</span><span class="p">):</span>
<span class="k">yield</span> <span class="p">{</span><span class="s2">&quot;data&quot;</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&quot;message </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">}</span>
</pre></div>
</div>
<p>Each yielded dict can have: data, event, id, retry.
Yielding a string is treated as data.</p>
</dd></dl>
<dl class="py attribute">
<dt class="sig sig-object py" id="responder.Response.status_code">
<span class="sig-name descname"><span class="pre">status_code</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span><span class="w"> </span><span class="p"><span class="pre">|</span></span><span class="w"> </span><span class="pre">None</span></em><a class="headerlink" href="#responder.Response.status_code" title="Link to this definition"></a></dt>
<dd><p>The HTTP Status Code to use for the Response.</p>
</dd></dl>
<dl class="py method">
<dt class="sig sig-object py" id="responder.Response.stream_file">
<span class="sig-name descname"><span class="pre">stream_file</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">path</span></span></em>, <em class="sig-param"><span class="keyword-only-separator o"><abbr title="Keyword-only parameters separator (PEP 3102)"><span class="pre">*</span></abbr></span></em>, <em class="sig-param"><span class="n"><span class="pre">content_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">chunk_size</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">8192</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Response.stream_file"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response.stream_file" title="Link to this definition"></a></dt>
<dd><p>Stream a file without loading it entirely into memory.</p>
<dl class="field-list simple">
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
<dd class="field-odd"><ul class="simple">
<li><p><strong>path</strong> Path to the file.</p></li>
<li><p><strong>content_type</strong> Optional MIME type override.</p></li>
<li><p><strong>chunk_size</strong> Size of chunks to read (default 8192 bytes).</p></li>
</ul>
</dd>
</dl>
</dd></dl>
</dd></dl>
</section>
<section id="utility-functions">
<h2>Utility Functions<a class="headerlink" href="#utility-functions" title="Link to this heading"></a></h2>
<dl class="py function">
<dt class="sig sig-object py" id="responder.API.status_codes.is_100">
<span class="sig-prename descclassname"><span class="pre">responder.API.status_codes.</span></span><span class="sig-name descname"><span class="pre">is_100</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">status_code</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/status_codes.html#is_100"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.status_codes.is_100" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="responder.API.status_codes.is_200">
<span class="sig-prename descclassname"><span class="pre">responder.API.status_codes.</span></span><span class="sig-name descname"><span class="pre">is_200</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">status_code</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/status_codes.html#is_200"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.status_codes.is_200" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="responder.API.status_codes.is_300">
<span class="sig-prename descclassname"><span class="pre">responder.API.status_codes.</span></span><span class="sig-name descname"><span class="pre">is_300</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">status_code</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/status_codes.html#is_300"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.status_codes.is_300" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="responder.API.status_codes.is_400">
<span class="sig-prename descclassname"><span class="pre">responder.API.status_codes.</span></span><span class="sig-name descname"><span class="pre">is_400</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">status_code</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/status_codes.html#is_400"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.status_codes.is_400" title="Link to this definition"></a></dt>
<dd></dd></dl>
<dl class="py function">
<dt class="sig sig-object py" id="responder.API.status_codes.is_500">
<span class="sig-prename descclassname"><span class="pre">responder.API.status_codes.</span></span><span class="sig-name descname"><span class="pre">is_500</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">status_code</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/status_codes.html#is_500"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.status_codes.is_500" title="Link to this definition"></a></dt>
<dd></dd></dl>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="Main">
<div class="sphinxsidebarwrapper"><p class="logo">
<a href="index.html">
<img class="logo" src="_static/responder.png" />
</a>
</p>
<p>
<strong>Responder</strong> — a familiar HTTP service framework for Python.
</p>
<h3>Useful Links</h3>
<ul>
<li><a href="https://github.com/kennethreitz/responder">Responder @ GitHub</a></li>
<li><a href="https://pypi.org/project/responder/">Responder @ PyPI</a></li>
<li><a href="https://github.com/kennethreitz/responder/issues">Issue Tracker</a></li>
</ul>
<div>
<h3><a href="index.html">Table of Contents</a></h3>
<ul>
<li><a class="reference internal" href="#">API Documentation</a><ul>
<li><a class="reference internal" href="#module-responder">Web Service (API) Class</a><ul>
<li><a class="reference internal" href="#responder.API"><code class="docutils literal notranslate"><span class="pre">API</span></code></a><ul>
<li><a class="reference internal" href="#responder.API.add_event_handler"><code class="docutils literal notranslate"><span class="pre">API.add_event_handler()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.add_route"><code class="docutils literal notranslate"><span class="pre">API.add_route()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.after_request"><code class="docutils literal notranslate"><span class="pre">API.after_request()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.exception_handler"><code class="docutils literal notranslate"><span class="pre">API.exception_handler()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.graphql"><code class="docutils literal notranslate"><span class="pre">API.graphql()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.group"><code class="docutils literal notranslate"><span class="pre">API.group()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.mount"><code class="docutils literal notranslate"><span class="pre">API.mount()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.on_event"><code class="docutils literal notranslate"><span class="pre">API.on_event()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.path_matches_route"><code class="docutils literal notranslate"><span class="pre">API.path_matches_route()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.redirect"><code class="docutils literal notranslate"><span class="pre">API.redirect()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.requests"><code class="docutils literal notranslate"><span class="pre">API.requests</span></code></a></li>
<li><a class="reference internal" href="#responder.API.route"><code class="docutils literal notranslate"><span class="pre">API.route()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.schema"><code class="docutils literal notranslate"><span class="pre">API.schema()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.serve"><code class="docutils literal notranslate"><span class="pre">API.serve()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.session"><code class="docutils literal notranslate"><span class="pre">API.session()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.template"><code class="docutils literal notranslate"><span class="pre">API.template()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.template_string"><code class="docutils literal notranslate"><span class="pre">API.template_string()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.url_for"><code class="docutils literal notranslate"><span class="pre">API.url_for()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#requests-responses">Requests &amp; Responses</a><ul>
<li><a class="reference internal" href="#responder.Request"><code class="docutils literal notranslate"><span class="pre">Request</span></code></a><ul>
<li><a class="reference internal" href="#responder.Request.accepts"><code class="docutils literal notranslate"><span class="pre">Request.accepts()</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.apparent_encoding"><code class="docutils literal notranslate"><span class="pre">Request.apparent_encoding</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.client"><code class="docutils literal notranslate"><span class="pre">Request.client</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.content"><code class="docutils literal notranslate"><span class="pre">Request.content</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.cookies"><code class="docutils literal notranslate"><span class="pre">Request.cookies</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.encoding"><code class="docutils literal notranslate"><span class="pre">Request.encoding</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.full_url"><code class="docutils literal notranslate"><span class="pre">Request.full_url</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.headers"><code class="docutils literal notranslate"><span class="pre">Request.headers</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.is_json"><code class="docutils literal notranslate"><span class="pre">Request.is_json</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.media"><code class="docutils literal notranslate"><span class="pre">Request.media()</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.method"><code class="docutils literal notranslate"><span class="pre">Request.method</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.params"><code class="docutils literal notranslate"><span class="pre">Request.params</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.path_params"><code class="docutils literal notranslate"><span class="pre">Request.path_params</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.session"><code class="docutils literal notranslate"><span class="pre">Request.session</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.state"><code class="docutils literal notranslate"><span class="pre">Request.state</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.text"><code class="docutils literal notranslate"><span class="pre">Request.text</span></code></a></li>
<li><a class="reference internal" href="#responder.Request.url"><code class="docutils literal notranslate"><span class="pre">Request.url</span></code></a></li>
</ul>
</li>
<li><a class="reference internal" href="#responder.Response"><code class="docutils literal notranslate"><span class="pre">Response</span></code></a><ul>
<li><a class="reference internal" href="#responder.Response.content"><code class="docutils literal notranslate"><span class="pre">Response.content</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.cookies"><code class="docutils literal notranslate"><span class="pre">Response.cookies</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.file"><code class="docutils literal notranslate"><span class="pre">Response.file()</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.formats"><code class="docutils literal notranslate"><span class="pre">Response.formats</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.headers"><code class="docutils literal notranslate"><span class="pre">Response.headers</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.media"><code class="docutils literal notranslate"><span class="pre">Response.media</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.session"><code class="docutils literal notranslate"><span class="pre">Response.session</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.sse"><code class="docutils literal notranslate"><span class="pre">Response.sse()</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.status_code"><code class="docutils literal notranslate"><span class="pre">Response.status_code</span></code></a></li>
<li><a class="reference internal" href="#responder.Response.stream_file"><code class="docutils literal notranslate"><span class="pre">Response.stream_file()</span></code></a></li>
</ul>
</li>
</ul>
</li>
<li><a class="reference internal" href="#utility-functions">Utility Functions</a><ul>
<li><a class="reference internal" href="#responder.API.status_codes.is_100"><code class="docutils literal notranslate"><span class="pre">is_100()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.status_codes.is_200"><code class="docutils literal notranslate"><span class="pre">is_200()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.status_codes.is_300"><code class="docutils literal notranslate"><span class="pre">is_300()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.status_codes.is_400"><code class="docutils literal notranslate"><span class="pre">is_400()</span></code></a></li>
<li><a class="reference internal" href="#responder.API.status_codes.is_500"><code class="docutils literal notranslate"><span class="pre">is_500()</span></code></a></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<search id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</search>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&#169;2018-2026, Kenneth Reitz.
|
<a href="_sources/api.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>