mirror of
https://github.com/kennethreitz/responder.git
synced 2026-06-05 23:00:17 +00:00
1131 lines
122 KiB
HTML
1131 lines
122 KiB
HTML
<!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 Reference — responder 3.6.2 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=c0c9fa11"></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="Command Line Interface" 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-reference">
|
||
<h1>API Reference<a class="headerlink" href="#api-reference" title="Link to this heading">¶</a></h1>
|
||
<p>This page documents Responder’s public Python API. For usage examples
|
||
and explanations, see the <a class="reference internal" href="quickstart.html"><span class="doc">Quick Start</span></a> and <a class="reference internal" href="tour.html"><span class="doc">Feature Tour</span></a>.</p>
|
||
<section id="the-api-class">
|
||
<h2>The API Class<a class="headerlink" href="#the-api-class" title="Link to this heading">¶</a></h2>
|
||
<p>The central object of every Responder application. It holds your routes,
|
||
middleware, templates, and configuration. Create one at the top of your
|
||
module and use it to define your entire web service.</p>
|
||
<p>Quick example:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">responder</span>
|
||
|
||
<span class="n">api</span> <span class="o">=</span> <span class="n">responder</span><span class="o">.</span><span class="n">API</span><span class="p">(</span>
|
||
<span class="n">title</span><span class="o">=</span><span class="s2">"My Service"</span><span class="p">,</span> <span class="c1"># OpenAPI title</span>
|
||
<span class="n">version</span><span class="o">=</span><span class="s2">"1.0"</span><span class="p">,</span> <span class="c1"># OpenAPI version</span>
|
||
<span class="n">openapi</span><span class="o">=</span><span class="s2">"3.0.2"</span><span class="p">,</span> <span class="c1"># enable OpenAPI</span>
|
||
<span class="n">docs_route</span><span class="o">=</span><span class="s2">"/docs"</span><span class="p">,</span> <span class="c1"># Swagger UI at /docs</span>
|
||
<span class="n">cors</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="c1"># enable CORS</span>
|
||
<span class="n">secret_key</span><span class="o">=</span><span class="s2">"change-me"</span><span class="p">,</span> <span class="c1"># session signing key</span>
|
||
<span class="n">allowed_hosts</span><span class="o">=</span><span class="p">[</span><span class="s2">"example.com"</span><span class="p">],</span>
|
||
<span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py class" id="module-responder">
|
||
<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">gzip</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">request_id</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">enable_logging</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 doesn’t already exist.</p></li>
|
||
<li><p><strong>templates_dir</strong> – The directory to use for templates. Will be created for you if it doesn’t 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>gzip</strong> – If <code class="docutils literal notranslate"><span class="pre">True</span></code> (the default), compress responses with GZip.</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_middleware">
|
||
<span class="sig-name descname"><span class="pre">add_middleware</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">middleware_cls</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">middleware_config</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.add_middleware"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.add_middleware" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Add ASGI middleware to the application.</p>
|
||
<p>Middleware wraps the entire application and can inspect or modify
|
||
every request and response. Middleware is applied in reverse order —
|
||
the last middleware added runs first.</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>middleware_cls</strong> – A Starlette-compatible middleware class.</p></li>
|
||
<li><p><strong>middleware_config</strong> – Keyword arguments passed to the middleware constructor.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
<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">starlette.middleware.httpsredirect</span><span class="w"> </span><span class="kn">import</span> <span class="n">HTTPSRedirectMiddleware</span>
|
||
<span class="n">api</span><span class="o">.</span><span class="n">add_middleware</span><span class="p">(</span><span class="n">HTTPSRedirectMiddleware</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</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">["GET",</span> <span class="pre">"POST"]</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">"X-Request-ID"</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.before_request">
|
||
<span class="sig-name descname"><span class="pre">before_request</span></span><span class="sig-paren">(</span><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><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/api.html#API.before_request"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.before_request" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Register a function to run before every request.</p>
|
||
<p>If the hook sets <code class="docutils literal notranslate"><span class="pre">resp.status_code</span></code>, the route handler is skipped
|
||
and the response is sent immediately (short-circuiting).</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>websocket</strong> – If <code class="docutils literal notranslate"><span class="pre">True</span></code>, register as a WebSocket before-request hook instead of HTTP.</p>
|
||
</dd>
|
||
</dl>
|
||
<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">before_request</span><span class="p">()</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">check_auth</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="k">if</span> <span class="s2">"Authorization"</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">req</span><span class="o">.</span><span class="n">headers</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">401</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">"error"</span><span class="p">:</span> <span class="s2">"unauthorized"</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">"error"</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">"stranger"</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">"Hello </span><span class="si">{</span><span class="n">name</span><span class="si">}</span><span class="s2">"</span>
|
||
|
||
<span class="n">api</span><span class="o">.</span><span class="n">graphql</span><span class="p">(</span><span class="s2">"/graphql"</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">"/v1"</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">"/users"</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">"/users/{id:int}"</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">"id"</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
|
||
(shouldn’t 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">'startup'</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">'shutdown'</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">"/hello"</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">"hello, world!"</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">"/items"</span><span class="p">,</span> <span class="n">methods</span><span class="o">=</span><span class="p">[</span><span class="s2">"POST"</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">"id"</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.run">
|
||
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><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.run"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.API.run" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Run the application. Shorthand for <a class="reference internal" href="#responder.API.serve" title="responder.API.serve"><code class="xref py py-meth docutils literal notranslate"><span class="pre">serve()</span></code></a> that inherits the <code class="docutils literal notranslate"><span class="pre">debug</span></code> setting.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>kwargs</strong> – Keyword arguments passed through to <a class="reference internal" href="#responder.API.serve" title="responder.API.serve"><code class="xref py py-meth docutils literal notranslate"><span class="pre">serve()</span></code></a>.</p>
|
||
</dd>
|
||
</dl>
|
||
</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">"Pet"</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 property">
|
||
<dt class="sig sig-object py" id="responder.API.static_app">
|
||
<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">static_app</span></span><a class="headerlink" href="#responder.API.static_app" title="Link to this definition">¶</a></dt>
|
||
<dd><p>The Starlette <code class="docutils literal notranslate"><span class="pre">StaticFiles</span></code> application for serving static assets.</p>
|
||
</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 you’re 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="request">
|
||
<h2>Request<a class="headerlink" href="#request" title="Link to this heading">¶</a></h2>
|
||
<p>The request object is passed into every view as the first argument. It
|
||
gives you access to everything the client sent — headers, query
|
||
parameters, the request body, cookies, and more.</p>
|
||
<p>Most properties are synchronous, but reading the body requires <code class="docutils literal notranslate"><span class="pre">await</span></code>
|
||
because it involves I/O.</p>
|
||
<p>Common patterns:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Headers (case-insensitive)</span>
|
||
<span class="n">token</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">headers</span><span class="o">.</span><span class="n">get</span><span class="p">(</span><span class="s2">"Authorization"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Query parameters: /search?q=python&page=2</span>
|
||
<span class="n">query</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">params</span><span class="p">[</span><span class="s2">"q"</span><span class="p">]</span>
|
||
|
||
<span class="c1"># JSON body</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="c1"># Form data</span>
|
||
<span class="n">form</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="s2">"form"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># File uploads</span>
|
||
<span class="n">files</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="s2">"files"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Client info</span>
|
||
<span class="n">ip</span><span class="p">,</span> <span class="n">port</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">client</span>
|
||
<span class="n">is_https</span> <span class="o">=</span> <span class="n">req</span><span class="o">.</span><span class="n">is_secure</span>
|
||
</pre></div>
|
||
</div>
|
||
<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><p>An HTTP request, passed to each view as the first argument.</p>
|
||
<p>Provides access to headers, cookies, query parameters, the request body,
|
||
session data, and more. Most properties are synchronous; reading the body
|
||
(via <a class="reference internal" href="#responder.Request.content" title="responder.Request.content"><code class="xref py py-attr docutils literal notranslate"><span class="pre">content</span></code></a>, <a class="reference internal" href="#responder.Request.text" title="responder.Request.text"><code class="xref py py-attr docutils literal notranslate"><span class="pre">text</span></code></a>, or <a class="reference internal" href="#responder.Request.media" title="responder.Request.media"><code class="xref py py-meth docutils literal notranslate"><span class="pre">media()</span></code></a>) requires <code class="docutils literal notranslate"><span class="pre">await</span></code>.</p>
|
||
<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 client’s 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 Request’s 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 property">
|
||
<dt class="sig sig-object py" id="responder.Request.is_secure">
|
||
<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_secure</span></span><a class="headerlink" href="#responder.Request.is_secure" title="Link to this definition">¶</a></dt>
|
||
<dd><p><code class="docutils literal notranslate"><span class="pre">True</span></code> if the request was made over HTTPS.</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.mimetype">
|
||
<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">mimetype</span></span><a class="headerlink" href="#responder.Request.mimetype" title="Link to this definition">¶</a></dt>
|
||
<dd><p>The MIME type of the request body, from the <code class="docutils literal notranslate"><span class="pre">Content-Type</span></code> header.</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>
|
||
|
||
</section>
|
||
<section id="response">
|
||
<h2>Response<a class="headerlink" href="#response" title="Link to this heading">¶</a></h2>
|
||
<p>The response object is passed into every view as the second argument.
|
||
Mutate it to control what gets sent back to the client — the body,
|
||
status code, headers, and cookies.</p>
|
||
<p>Common patterns:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">resp</span><span class="o">.</span><span class="n">text</span> <span class="o">=</span> <span class="s2">"plain text"</span> <span class="c1"># text/plain</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">html</span> <span class="o">=</span> <span class="s2">"<h1>Hello</h1>"</span> <span class="c1"># text/html</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">"key"</span><span class="p">:</span> <span class="s2">"value"</span><span class="p">}</span> <span class="c1"># application/json</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">content</span> <span class="o">=</span> <span class="sa">b</span><span class="s2">"raw bytes"</span> <span class="c1"># application/octet-stream</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">file</span><span class="p">(</span><span class="s2">"path/to/file.pdf"</span><span class="p">)</span> <span class="c1"># auto content-type</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">stream_file</span><span class="p">(</span><span class="s2">"large/export.csv"</span><span class="p">)</span> <span class="c1"># streamed</span>
|
||
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">status_code</span> <span class="o">=</span> <span class="mi">201</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">headers</span><span class="p">[</span><span class="s2">"X-Custom"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"value"</span>
|
||
<span class="n">resp</span><span class="o">.</span><span class="n">cookies</span><span class="p">[</span><span class="s2">"session"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"abc123"</span>
|
||
</pre></div>
|
||
</div>
|
||
<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><p>An HTTP response, passed to each view as the second argument.</p>
|
||
<p>Mutate this object to control what gets sent back to the client. Set
|
||
<code class="xref py py-attr docutils literal notranslate"><span class="pre">text</span></code>, <code class="xref py py-attr docutils literal notranslate"><span class="pre">html</span></code>, <code class="xref py py-attr docutils literal notranslate"><span class="pre">media</span></code>, or <code class="xref py py-attr docutils literal notranslate"><span class="pre">content</span></code> to define
|
||
the body. Use <code class="xref py py-attr docutils literal notranslate"><span class="pre">headers</span></code> and <a class="reference internal" href="#responder.Response.set_cookie" title="responder.Response.set_cookie"><code class="xref py py-meth docutils literal notranslate"><span class="pre">set_cookie()</span></code></a> to control metadata.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Variables<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><ul class="simple">
|
||
<li><p><strong>text</strong> – Set the response body as plain text (sets <code class="docutils literal notranslate"><span class="pre">Content-Type:</span> <span class="pre">text/plain</span></code>).</p></li>
|
||
<li><p><strong>html</strong> – Set the response body as HTML (sets <code class="docutils literal notranslate"><span class="pre">Content-Type:</span> <span class="pre">text/html</span></code>).</p></li>
|
||
<li><p><strong>media</strong> – Set a Python object (dict, list) to be serialized as JSON (or negotiated format).</p></li>
|
||
<li><p><strong>content</strong> – Set the raw response body as bytes.</p></li>
|
||
<li><p><strong>status_code</strong> – The HTTP status code (e.g. <code class="docutils literal notranslate"><span class="pre">200</span></code>, <code class="docutils literal notranslate"><span class="pre">404</span></code>). Defaults to <code class="docutils literal notranslate"><span class="pre">200</span></code> if not set.</p></li>
|
||
<li><p><strong>headers</strong> – A dict of response headers.</p></li>
|
||
<li><p><strong>cookies</strong> – A <code class="docutils literal notranslate"><span class="pre">SimpleCookie</span></code> holding cookies to set on the response.</p></li>
|
||
<li><p><strong>session</strong> – A dict of session data. Changes are persisted in a signed cookie.</p></li>
|
||
</ul>
|
||
</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 property">
|
||
<dt class="sig sig-object py" id="responder.Response.ok">
|
||
<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">ok</span></span><a class="headerlink" href="#responder.Response.ok" title="Link to this definition">¶</a></dt>
|
||
<dd><p><code class="docutils literal notranslate"><span class="pre">True</span></code> if the status code is in the 2xx range (success).</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.Response.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">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/models.html#Response.redirect"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response.redirect" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Redirect the client to a different URL.</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>location</strong> – The URL to redirect to.</p></li>
|
||
<li><p><strong>set_text</strong> – If <code class="docutils literal notranslate"><span class="pre">True</span></code>, set a default redirect message as the body.</p></li>
|
||
<li><p><strong>status_code</strong> – The HTTP status code (default <code class="docutils literal notranslate"><span class="pre">301</span></code>).</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.Response.set_cookie">
|
||
<span class="sig-name descname"><span class="pre">set_cookie</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">value</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">''</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">expires</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">path</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'/'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">domain</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">max_age</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">secure</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">httponly</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#Response.set_cookie"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response.set_cookie" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Set a cookie on the response with full control over directives.</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>key</strong> – The cookie name.</p></li>
|
||
<li><p><strong>value</strong> – The cookie value.</p></li>
|
||
<li><p><strong>expires</strong> – Expiration date string (e.g. <code class="docutils literal notranslate"><span class="pre">"Thu,</span> <span class="pre">01</span> <span class="pre">Jan</span> <span class="pre">2026</span> <span class="pre">00:00:00</span> <span class="pre">GMT"</span></code>).</p></li>
|
||
<li><p><strong>path</strong> – URL path the cookie applies to (default <code class="docutils literal notranslate"><span class="pre">"/"</span></code>).</p></li>
|
||
<li><p><strong>domain</strong> – Domain the cookie is valid for.</p></li>
|
||
<li><p><strong>max_age</strong> – Maximum age in seconds before the cookie expires.</p></li>
|
||
<li><p><strong>secure</strong> – If <code class="docutils literal notranslate"><span class="pre">True</span></code>, cookie is only sent over HTTPS.</p></li>
|
||
<li><p><strong>httponly</strong> – If <code class="docutils literal notranslate"><span class="pre">True</span></code> (default), cookie is inaccessible to JavaScript.</p></li>
|
||
</ul>
|
||
</dd>
|
||
</dl>
|
||
<p>Usage:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">resp</span><span class="o">.</span><span class="n">set_cookie</span><span class="p">(</span>
|
||
<span class="s2">"token"</span><span class="p">,</span> <span class="n">value</span><span class="o">=</span><span class="s2">"abc123"</span><span class="p">,</span>
|
||
<span class="n">max_age</span><span class="o">=</span><span class="mi">3600</span><span class="p">,</span> <span class="n">secure</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span> <span class="n">httponly</span><span class="o">=</span><span class="kc">True</span><span class="p">,</span>
|
||
<span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
</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">"/events"</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">"data"</span><span class="p">:</span> <span class="sa">f</span><span class="s2">"message </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="s2">"</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 property">
|
||
<dt class="sig sig-object py" id="responder.Response.status_code_safe">
|
||
<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">status_code_safe</span></span><em class="property"><span class="p"><span class="pre">:</span></span><span class="w"> </span><span class="pre">int</span></em><a class="headerlink" href="#responder.Response.status_code_safe" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Return the status code, raising <code class="docutils literal notranslate"><span class="pre">RuntimeError</span></code> if it hasn’t been set.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.Response.stream">
|
||
<span class="sig-name descname"><span class="pre">stream</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.stream"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.Response.stream" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Set up a streaming response from an async generator function.</p>
|
||
<p>The generator yields chunks of bytes that are sent to the client
|
||
as they are produced, without buffering the full response in memory.</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">"/stream"</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">stream_data</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">stream</span>
|
||
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">body</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="sa">f</span><span class="s2">"chunk </span><span class="si">{</span><span class="n">i</span><span class="si">}</span><span class="se">\n</span><span class="s2">"</span><span class="o">.</span><span class="n">encode</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"><p><strong>func</strong> – An async generator function that yields response chunks.</p>
|
||
</dd>
|
||
</dl>
|
||
</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="route-groups">
|
||
<h2>Route Groups<a class="headerlink" href="#route-groups" title="Link to this heading">¶</a></h2>
|
||
<p>Group related routes under a shared URL prefix — useful for API versioning
|
||
and organizing large applications:</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">"/v1"</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">"/users"</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>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py class">
|
||
<dt class="sig sig-object py" id="responder.api.RouteGroup">
|
||
<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.api.</span></span><span class="sig-name descname"><span class="pre">RouteGroup</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">api</span></span></em>, <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#RouteGroup"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.api.RouteGroup" title="Link to this definition">¶</a></dt>
|
||
<dd><p>A group of routes with a shared URL prefix.</p>
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="background-queue">
|
||
<h2>Background Queue<a class="headerlink" href="#background-queue" title="Link to this heading">¶</a></h2>
|
||
<p>Run tasks in background threads without blocking the response. Available
|
||
as <code class="docutils literal notranslate"><span class="pre">api.background</span></code>:</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">"/submit"</span><span class="p">)</span>
|
||
<span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">submit</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="nd">@api</span><span class="o">.</span><span class="n">background</span><span class="o">.</span><span class="n">task</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">process</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
|
||
<span class="c1"># runs in a thread pool</span>
|
||
<span class="o">...</span>
|
||
|
||
<span class="n">process</span><span class="p">(</span><span class="n">data</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">"status"</span><span class="p">:</span> <span class="s2">"accepted"</span><span class="p">}</span>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py class">
|
||
<dt class="sig sig-object py" id="responder.background.BackgroundQueue">
|
||
<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.background.</span></span><span class="sig-name descname"><span class="pre">BackgroundQueue</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">n</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/background.html#BackgroundQueue"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.background.BackgroundQueue" title="Link to this definition">¶</a></dt>
|
||
<dd><p>A queue for running tasks in background threads.</p>
|
||
<p>Uses a <code class="docutils literal notranslate"><span class="pre">ThreadPoolExecutor</span></code> sized to the number of CPUs. Access it
|
||
via <code class="docutils literal notranslate"><span class="pre">api.background</span></code>.</p>
|
||
<p>Usage:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># As a decorator — fire and forget</span>
|
||
<span class="nd">@api</span><span class="o">.</span><span class="n">background</span><span class="o">.</span><span class="n">task</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">send_email</span><span class="p">(</span><span class="n">to</span><span class="p">,</span> <span class="n">subject</span><span class="p">):</span>
|
||
<span class="o">...</span>
|
||
|
||
<span class="n">send_email</span><span class="p">(</span><span class="s2">"user@example.com"</span><span class="p">,</span> <span class="s2">"Hello"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># Direct submission</span>
|
||
<span class="n">future</span> <span class="o">=</span> <span class="n">api</span><span class="o">.</span><span class="n">background</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">send_email</span><span class="p">,</span> <span class="s2">"user@example.com"</span><span class="p">,</span> <span class="s2">"Hello"</span><span class="p">)</span>
|
||
|
||
<span class="c1"># As a callable (supports async functions)</span>
|
||
<span class="k">await</span> <span class="n">api</span><span class="o">.</span><span class="n">background</span><span class="p">(</span><span class="n">send_email</span><span class="p">,</span> <span class="s2">"user@example.com"</span><span class="p">,</span> <span class="s2">"Hello"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.background.BackgroundQueue.run">
|
||
<span class="sig-name descname"><span class="pre">run</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</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/background.html#BackgroundQueue.run"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.background.BackgroundQueue.run" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Submit a function to run in a background thread.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>f</strong> – The function to run.</p>
|
||
</dd>
|
||
<dt class="field-even">Returns<span class="colon">:</span></dt>
|
||
<dd class="field-even"><p>A <code class="docutils literal notranslate"><span class="pre">concurrent.futures.Future</span></code> for the result.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.background.BackgroundQueue.task">
|
||
<span class="sig-name descname"><span class="pre">task</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">f</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/background.html#BackgroundQueue.task"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.background.BackgroundQueue.task" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Decorator that wraps a function to run in the background thread pool.</p>
|
||
<p>The decorated function returns a <code class="docutils literal notranslate"><span class="pre">Future</span></code> instead of blocking.
|
||
Exceptions are printed to stderr via traceback.</p>
|
||
<dl class="field-list simple">
|
||
<dt class="field-odd">Parameters<span class="colon">:</span></dt>
|
||
<dd class="field-odd"><p><strong>f</strong> – The function to wrap.</p>
|
||
</dd>
|
||
</dl>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="query-dict">
|
||
<h2>Query Dict<a class="headerlink" href="#query-dict" title="Link to this heading">¶</a></h2>
|
||
<p>A dictionary subclass for query string parameters with multi-value support.
|
||
Behaves like a normal dict for single values, but supports <code class="docutils literal notranslate"><span class="pre">getlist()</span></code>
|
||
for parameters that appear multiple times (e.g. <code class="docutils literal notranslate"><span class="pre">?tag=a&tag=b</span></code>).</p>
|
||
<dl class="py class">
|
||
<dt class="sig sig-object py" id="responder.models.QueryDict">
|
||
<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.models.</span></span><span class="sig-name descname"><span class="pre">QueryDict</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">query_string</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#QueryDict"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.models.QueryDict" title="Link to this definition">¶</a></dt>
|
||
<dd><p>A dictionary for query string parameters that handles multi-value keys.</p>
|
||
<p>Single-value access returns the last value for a key. Use <a class="reference internal" href="#responder.models.QueryDict.get_list" title="responder.models.QueryDict.get_list"><code class="xref py py-meth docutils literal notranslate"><span class="pre">get_list()</span></code></a>
|
||
to retrieve all values for a multi-value parameter.</p>
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.models.QueryDict.get">
|
||
<span class="sig-name descname"><span class="pre">get</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></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">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#QueryDict.get"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.models.QueryDict.get" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Return the last data value for the passed key. If key doesn’t exist
|
||
or value is an empty list, return <cite>default</cite>.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.models.QueryDict.get_list">
|
||
<span class="sig-name descname"><span class="pre">get_list</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">key</span></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">None</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#QueryDict.get_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.models.QueryDict.get_list" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Return the list of values for the key. If key doesn’t exist, return a
|
||
default value.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.models.QueryDict.items">
|
||
<span class="sig-name descname"><span class="pre">items</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#QueryDict.items"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.models.QueryDict.items" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Yield (key, value) pairs, where value is the last item in the list
|
||
associated with the key.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.models.QueryDict.items_list">
|
||
<span class="sig-name descname"><span class="pre">items_list</span></span><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/models.html#QueryDict.items_list"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.models.QueryDict.items_list" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Yield (key, value) pairs, where value is the the list.</p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="rate-limiter">
|
||
<h2>Rate Limiter<a class="headerlink" href="#rate-limiter" title="Link to this heading">¶</a></h2>
|
||
<p>In-memory token bucket rate limiter. Limits requests per client IP address
|
||
and returns <code class="docutils literal notranslate"><span class="pre">429</span> <span class="pre">Too</span> <span class="pre">Many</span> <span class="pre">Requests</span></code> when exceeded:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">responder.ext.ratelimit</span><span class="w"> </span><span class="kn">import</span> <span class="n">RateLimiter</span>
|
||
|
||
<span class="n">limiter</span> <span class="o">=</span> <span class="n">RateLimiter</span><span class="p">(</span><span class="n">requests</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">period</span><span class="o">=</span><span class="mi">60</span><span class="p">)</span> <span class="c1"># 100 req/min</span>
|
||
<span class="n">limiter</span><span class="o">.</span><span class="n">install</span><span class="p">(</span><span class="n">api</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Response headers: <code class="docutils literal notranslate"><span class="pre">X-RateLimit-Limit</span></code>, <code class="docutils literal notranslate"><span class="pre">X-RateLimit-Remaining</span></code>,
|
||
and <code class="docutils literal notranslate"><span class="pre">Retry-After</span></code> (when limited).</p>
|
||
<dl class="py class">
|
||
<dt class="sig sig-object py" id="responder.ext.ratelimit.RateLimiter">
|
||
<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.ext.ratelimit.</span></span><span class="sig-name descname"><span class="pre">RateLimiter</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">requests</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">100</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">period</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">60</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/ext/ratelimit.html#RateLimiter"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.ext.ratelimit.RateLimiter" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Token bucket rate limiter.</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">responder.ext.ratelimit</span><span class="w"> </span><span class="kn">import</span> <span class="n">RateLimiter</span>
|
||
|
||
<span class="n">limiter</span> <span class="o">=</span> <span class="n">RateLimiter</span><span class="p">(</span><span class="n">requests</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">period</span><span class="o">=</span><span class="mi">60</span><span class="p">)</span> <span class="c1"># 100 req/min</span>
|
||
|
||
<span class="nd">@api</span><span class="o">.</span><span class="n">route</span><span class="p">(</span><span class="n">before_request</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
||
<span class="k">def</span><span class="w"> </span><span class="nf">rate_limit</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">limiter</span><span class="o">.</span><span class="n">check</span><span class="p">(</span><span class="n">req</span><span class="p">,</span> <span class="n">resp</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<p>Or use the shorthand:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">limiter</span> <span class="o">=</span> <span class="n">RateLimiter</span><span class="p">(</span><span class="n">requests</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span> <span class="n">period</span><span class="o">=</span><span class="mi">60</span><span class="p">)</span>
|
||
<span class="n">limiter</span><span class="o">.</span><span class="n">install</span><span class="p">(</span><span class="n">api</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.ext.ratelimit.RateLimiter.check">
|
||
<span class="sig-name descname"><span class="pre">check</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="n"><span class="pre">resp</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/ext/ratelimit.html#RateLimiter.check"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.ext.ratelimit.RateLimiter.check" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Check rate limit. Sets 429 status if exceeded.</p>
|
||
</dd></dl>
|
||
|
||
<dl class="py method">
|
||
<dt class="sig sig-object py" id="responder.ext.ratelimit.RateLimiter.install">
|
||
<span class="sig-name descname"><span class="pre">install</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">api</span></span></em><span class="sig-paren">)</span><a class="reference internal" href="_modules/responder/ext/ratelimit.html#RateLimiter.install"><span class="viewcode-link"><span class="pre">[source]</span></span></a><a class="headerlink" href="#responder.ext.ratelimit.RateLimiter.install" title="Link to this definition">¶</a></dt>
|
||
<dd><p>Install as a before_request hook on the API.</p>
|
||
</dd></dl>
|
||
|
||
</dd></dl>
|
||
|
||
</section>
|
||
<section id="status-code-helpers">
|
||
<h2>Status Code Helpers<a class="headerlink" href="#status-code-helpers" title="Link to this heading">¶</a></h2>
|
||
<p>Convenience functions for checking which category a status code falls
|
||
into. Useful in middleware and after-request hooks:</p>
|
||
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span><span class="w"> </span><span class="nn">responder.status_codes</span><span class="w"> </span><span class="kn">import</span> <span class="n">is_200</span><span class="p">,</span> <span class="n">is_400</span><span class="p">,</span> <span class="n">is_500</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">log_errors</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="k">if</span> <span class="n">is_400</span><span class="p">(</span><span class="n">resp</span><span class="o">.</span><span class="n">status_code</span><span class="p">)</span> <span class="ow">or</span> <span class="n">is_500</span><span class="p">(</span><span class="n">resp</span><span class="o">.</span><span class="n">status_code</span><span class="p">):</span>
|
||
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Error: </span><span class="si">{</span><span class="n">req</span><span class="o">.</span><span class="n">method</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="n">req</span><span class="o">.</span><span class="n">url</span><span class="o">.</span><span class="n">path</span><span class="si">}</span><span class="s2"> -> </span><span class="si">{</span><span class="n">resp</span><span class="o">.</span><span class="n">status_code</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
|
||
</pre></div>
|
||
</div>
|
||
<dl class="py function">
|
||
<dt class="sig sig-object py" id="responder.status_codes.is_100">
|
||
<span class="sig-prename descclassname"><span class="pre">responder.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.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.status_codes.is_200">
|
||
<span class="sig-prename descclassname"><span class="pre">responder.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.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.status_codes.is_300">
|
||
<span class="sig-prename descclassname"><span class="pre">responder.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.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.status_codes.is_400">
|
||
<span class="sig-prename descclassname"><span class="pre">responder.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.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.status_codes.is_500">
|
||
<span class="sig-prename descclassname"><span class="pre">responder.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.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.
|
||
<br />
|
||
<small>v3.6.2</small>
|
||
</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 Reference</a><ul>
|
||
<li><a class="reference internal" href="#the-api-class">The 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_middleware"><code class="docutils literal notranslate"><span class="pre">API.add_middleware()</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.before_request"><code class="docutils literal notranslate"><span class="pre">API.before_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.run"><code class="docutils literal notranslate"><span class="pre">API.run()</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.static_app"><code class="docutils literal notranslate"><span class="pre">API.static_app</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="#request">Request</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.is_secure"><code class="docutils literal notranslate"><span class="pre">Request.is_secure</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.mimetype"><code class="docutils literal notranslate"><span class="pre">Request.mimetype</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>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#response">Response</a><ul>
|
||
<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.file"><code class="docutils literal notranslate"><span class="pre">Response.file()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.Response.ok"><code class="docutils literal notranslate"><span class="pre">Response.ok</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.Response.redirect"><code class="docutils literal notranslate"><span class="pre">Response.redirect()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.Response.set_cookie"><code class="docutils literal notranslate"><span class="pre">Response.set_cookie()</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_safe"><code class="docutils literal notranslate"><span class="pre">Response.status_code_safe</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.Response.stream"><code class="docutils literal notranslate"><span class="pre">Response.stream()</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="#route-groups">Route Groups</a><ul>
|
||
<li><a class="reference internal" href="#responder.api.RouteGroup"><code class="docutils literal notranslate"><span class="pre">RouteGroup</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#background-queue">Background Queue</a><ul>
|
||
<li><a class="reference internal" href="#responder.background.BackgroundQueue"><code class="docutils literal notranslate"><span class="pre">BackgroundQueue</span></code></a><ul>
|
||
<li><a class="reference internal" href="#responder.background.BackgroundQueue.run"><code class="docutils literal notranslate"><span class="pre">BackgroundQueue.run()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.background.BackgroundQueue.task"><code class="docutils literal notranslate"><span class="pre">BackgroundQueue.task()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#query-dict">Query Dict</a><ul>
|
||
<li><a class="reference internal" href="#responder.models.QueryDict"><code class="docutils literal notranslate"><span class="pre">QueryDict</span></code></a><ul>
|
||
<li><a class="reference internal" href="#responder.models.QueryDict.get"><code class="docutils literal notranslate"><span class="pre">QueryDict.get()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.models.QueryDict.get_list"><code class="docutils literal notranslate"><span class="pre">QueryDict.get_list()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.models.QueryDict.items"><code class="docutils literal notranslate"><span class="pre">QueryDict.items()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.models.QueryDict.items_list"><code class="docutils literal notranslate"><span class="pre">QueryDict.items_list()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#rate-limiter">Rate Limiter</a><ul>
|
||
<li><a class="reference internal" href="#responder.ext.ratelimit.RateLimiter"><code class="docutils literal notranslate"><span class="pre">RateLimiter</span></code></a><ul>
|
||
<li><a class="reference internal" href="#responder.ext.ratelimit.RateLimiter.check"><code class="docutils literal notranslate"><span class="pre">RateLimiter.check()</span></code></a></li>
|
||
<li><a class="reference internal" href="#responder.ext.ratelimit.RateLimiter.install"><code class="docutils literal notranslate"><span class="pre">RateLimiter.install()</span></code></a></li>
|
||
</ul>
|
||
</li>
|
||
</ul>
|
||
</li>
|
||
<li><a class="reference internal" href="#status-code-helpers">Status Code Helpers</a><ul>
|
||
<li><a class="reference internal" href="#responder.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.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.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.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.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">
|
||
©2018-2026, Kenneth Reitz.
|
||
|
||
|
|
||
<a href="_sources/api.rst.txt"
|
||
rel="nofollow">Page source</a>
|
||
</div>
|
||
|
||
|
||
|
||
|
||
</body>
|
||
</html> |