--- /dev/null
+<p align="center">
+ <a href="https://fastapi.tiangolo.com"><img src="https://fastapi.tiangolo.com/img/logo-margin/logo-teal.png" alt="FastAPI"></a>
+</p>
+<p align="center">
+ <em>FastAPI āĻāĻā§āĻāĻā§āώāĻŽāϤāĻž āϏāĻŽā§āĻĒāύā§āύ, āϏāĻšāĻā§ āĻļā§āĻāĻžāϰ āĻāĻŦāĻ āĻĻā§āϰā§āϤ āĻā§āĻĄ āĻāϰ⧠āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ āĻĢā§āϰāĻžāĻŽāĻā§āĻžāϰā§āĻāĨ¤</em>
+</p>
+<p align="center">
+<a href="https://github.com/tiangolo/fastapi/actions?query=workflow%3ATest" target="_blank">
+ <img src="https://github.com/tiangolo/fastapi/workflows/Test/badge.svg" alt="Test">
+</a>
+<a href="https://codecov.io/gh/tiangolo/fastapi" target="_blank">
+ <img src="https://img.shields.io/codecov/c/github/tiangolo/fastapi?color=%2334D058" alt="Coverage">
+</a>
+<a href="https://pypi.org/project/fastapi" target="_blank">
+ <img src="https://img.shields.io/pypi/v/fastapi?color=%2334D058&label=pypi%20package" alt="Package version">
+</a>
+</p>
+
+---
+
+**āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ**: <a href="https://fastapi.tiangolo.com" target="_blank">https://fastapi.tiangolo.com</a>
+
+**āϏā§āϰā§āϏ āĻā§āĻĄ**: <a href="https://github.com/tiangolo/fastapi" target="_blank">https://github.com/tiangolo/fastapi</a>
+
+---
+
+FastAPI āĻāĻāĻāĻŋ āĻāϧā§āύāĻŋāĻ, āĻĻā§āϰā§āϤ ( āĻŦā§āĻļāĻŋ āĻā§āώāĻŽāϤāĻž ) āϏāĻŽā§āĻĒāύā§āύ, Python 3.6+ āĻĻāĻŋā§ā§ API āϤā§āϰāĻŋāϰ āĻāύā§āϝ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āĻĒāĻžāĻāĻĨāύ āĻāĻžāĻāĻĒ āĻāĻā§āĻāĻŋāϤ āĻāĻŋāϤā§āϤāĻŋāĻ āĻāϝāĻŧā§āĻŦ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻāĨ¤
+
+āĻāϰ āĻŽā§āϞ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻā§āϞ⧠āĻšāϞāĻ
+
+- **āĻāϤāĻŋ**: āĻāĻāĻŋ **NodeJS** āĻāĻŦāĻ **Go** āĻāϰ āĻŽāϤ āĻāĻžāϰā§āϝāĻā§āώāĻŽāϤāĻž āϏāĻŽā§āĻĒāύā§āύ (Starlette āĻāĻŦāĻ Pydantic āĻāϰ āϏāĻžāĻšāĻžāϝā§āϝā§)āĨ¤ [āĻĒāĻžāĻāĻĨāύ āĻāϰ āĻĻā§āϰā§āϤāϤāĻŽ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻ āĻā§āϞā§āϰ āĻŽāϧā§āϝ⧠āĻāĻāĻŋ āĻāĻāĻāĻŋ](#_11)āĨ¤
+- **āĻĻā§āϰā§āϤ āĻā§āĻĄ āĻāϰāĻž**:āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϤā§āϰāĻŋāϰ āĻāϤāĻŋ ⧍ā§Ļā§Ļ% āĻĨā§āĻā§ ā§Šā§Ļā§Ļ% āĻŦā§āĻĻā§āϧāĻŋ āĻāϰā§ā§ˇ \*
+- **āϏā§āĻŦāϞā§āĻĒ bugs**: āĻŽāĻžāύā§āĻŦ (āĻĄā§āĻā§āϞāĻĒāĻžāϰ) āϏā§āώā§āĻ āϤā§āϰā§āĻāĻŋāϰ āĻĒā§āϰāĻžāϝāĻŧ ā§Ēā§Ļ% āĻšā§āϰāĻžāϏ āĻāϰā§āĨ¤ \*
+- **āϏā§āĻŦāĻā§āĻāĻžāϤ**: āĻĻā§āϰā§āĻĻāĻžāύā§āϤ āĻāĻĄāĻŋāĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ <abbr title="also known as auto-complete, autocompletion, IntelliSense">Completion</abbr> āύāĻžāĻŽā§āĻ āĻĒāϰāĻŋāĻāĻŋāϤāĨ¤ āĻĻā§āϰā§āϤ āĻĄāĻŋāĻŦāĻžāĻ āĻāϰāĻž āϝāĻžā§āĨ¤
+
+- **āϏāĻšāĻ**: āĻāĻāĻŋ āĻāĻŽāύ āĻāĻžāĻŦā§ āϏāĻāĻžāύ⧠āĻšā§ā§āĻā§ āϝā§āύ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻĒā§ā§ āϏāĻšāĻā§ āĻļā§āĻāĻž āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝāĻžā§āĨ¤
+- **āϏāĻāĻā§āώāĻŋāĻĒā§āϤ**: āĻā§āĻĄ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāĻŽāĻžāύā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ, bug āĻāĻŽāĻžā§ āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻā§āώāĻŖāĻž āĻĨā§āĻā§ āĻāĻāĻžāϧāĻŋāĻ āĻĢāĻŋāĻāĻžāϰ āĻĒāĻžāĻā§āĻž āϝāĻžā§ āĨ¤
+- **āĻā§āϰāĻžāϞā§**: āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻžāĻŦā§ āϤā§āϰāĻŋ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āύāĻĨāĻŋ (documentation) āϏāĻš āĻā§āĻĒāĻžāĻĻāύ āĻāĻĒāϝā§āĻāĻŋ (Production-ready) āĻā§āĻĄ āĻĒāĻžāĻā§āĻž āϝāĻžā§āĨ¤
+- **āĻŽāĻžāύ-āĻāĻŋāϤā§āϤāĻŋāĻ**: āĻāϰ āĻāĻŋāϤā§āϤāĻŋ <a href="https://github.com/OAI/OpenAPI-Specification" class="external-link" target="_blank">OpenAPI</a> (āϝāĻž āĻĒā§āϰā§āĻŦā§ Swagger āύāĻžāĻŽā§ āĻĒāϰāĻŋāĻāĻŋāϤ āĻāĻŋāϞ) āĻāĻŦāĻ <a href="https://json-schema.org/" class="external-link" target="_blank">JSON Schema</a> āĻāϰ āĻāĻĻāϰā§āĻļā§āϰ āĻŽāĻžāύā§āϰ āĻāĻĒāϰ
+
+<small>\* āĻā§āĻĒāĻžāĻĻāύāĻŽā§āĻāĻŋ āĻāĻĒā§āϞāĻŋāĻā§āĻļāύ āĻŦāĻžāύāĻžāύā§āϰ āĻāĻ āĻĻāϞ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāϰ āĻŽāϤāĻžāĻŽāϤ āĻāĻŋāϤā§āϤāĻŋāĻ āĻĢāϞāĻžāĻĢāϞāĨ¤</small>
+
+## āϏā§āĻĒāύāϏāϰ āĻāĻŖ
+
+<!-- sponsors -->
+
+{% if sponsors %}
+{% for sponsor in sponsors.gold -%}
+<a href="{{ sponsor.url }}" target="_blank" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
+{% endfor -%}
+{%- for sponsor in sponsors.silver -%}
+<a href="{{ sponsor.url }}" target="_blank" title="{{ sponsor.title }}"><img src="{{ sponsor.img }}" style="border-radius:15px"></a>
+{% endfor %}
+{% endif %}
+
+<!-- /sponsors -->
+
+<a href="https://fastapi.tiangolo.com/fastapi-people/#sponsors" class="external-link" target="_blank">āĻ
āύā§āϝāĻžāύā§āϝ āϏā§āĻĒāύāϏāϰ āĻāĻŖ</a>
+
+## āĻŽāϤāĻžāĻŽāϤ āϏāĻŽā§āĻš
+
+"_āĻāĻŽāĻŋ āĻāĻāĻāĻžāϞ **FastAPI** āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻāĻŋāĨ¤ [...] āĻāĻŽāϰāĻž āĻāĻžāĻŦāĻāĻŋ āĻŽāĻžāĻāĻā§āϰā§āϏāĻĢā§āĻā§ **ML āϏāĻžāϰā§āĻāĻŋāϏ** āĻ āϏāĻāϞ āĻĻāϞā§āϰ āĻāύā§āϝ āĻāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŦāĨ¤ āϝāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻŋāĻā§ āĻĒāĻŖā§āϝ **Windows** āĻ āϏāĻāϝā§āϝāύ āĻšā§ āĻāĻŦāĻ āĻāĻŋāĻā§ **Office** āĻāϰ āϏāĻžāĻĨā§ āϏāĻāϝā§āϝāύ āĻšāĻā§āĻā§āĨ¤_"
+
+<div style="text-align: right; margin-right: 10%;">āĻāĻŦāĻŋāϰ āĻāĻžāύ - <strong>āĻŽāĻžāĻāĻā§āϰā§āϏāĻĢā§āĻā§</strong> <a href="https://github.com/tiangolo/fastapi/pull/26" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+"_āĻāĻŽāϰāĻž **FastAPI** āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻā§āϰāĻšāĻŖ āĻāϰā§āĻāĻŋ āĻāĻāĻāĻŋ **REST** āϏāĻžāϰā§āĻāĻžāϰ āϤā§āϰāĻŋ āĻāϰāϤā§, āϝāĻž **āĻāĻŦāĻŋāώā§āϝāĻĻā§āĻŦāĻžāĻŖā§** āĻĒāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻā§ā§ā§āϰāĻŋ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§āĨ¤ [āϞā§āĻĄāĻāĻāĻā§āϰ āĻāύā§āϝ]_"
+
+<div style="text-align: right; margin-right: 10%;">āĻĒāĻŋāϝāĻŧā§āϰ⧠āĻŽā§āϞāĻŋāύā§, āĻāϝāĻŧāĻžāϰā§āϏā§āϞāĻžāĻ āĻĻā§āĻĻāĻŋāύ, āĻāĻŦāĻ āϏāĻžāĻ āϏā§āĻŽāύā§āĻĨ āĻŽāĻŋāϰāĻŋāϝāĻŧāĻžāϞāĻž - <strong>āĻāĻŦāĻžāϰ</strong> <a href="https://eng.uber.com/ludwig-v0-2/" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+"_**Netflix** āĻāĻŽāĻžāĻĻā§āϰ **āĻā§āϰāĻžāĻāϏāĻŋāϏ āĻŽā§āϝāĻžāύā§āĻāĻŽā§āύā§āĻ** āĻ
āϰā§āĻā§āϏā§āĻā§āϰā§āĻļāύ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻ: **āĻĄāĻŋāϏāĻĒā§āϝāĻžāĻ** āĻāϰ āĻāĻĒā§āύ āϏā§āϰā§āϏ āϰāĻŋāϞāĻŋāĻ āĻā§āώāĻŖāĻž āĻāϰāϤ⧠āĻĒā§āϰ⧠āĻāύāύā§āĻĻāĻŋāϤ! [āϝāĻžāĻāĻŋāύāĻž **FastAPI** āĻĻāĻŋāϝāĻŧā§ āύāĻŋāϰā§āĻŽāĻŋāϤ]_"
+
+<div style="text-align: right; margin-right: 10%;">āĻā§āĻāĻŋāύ āĻā§āϞāĻŋāϏāύ, āĻŽāĻžāϰā§āĻ āĻāĻŋāϞāĻžāύā§āĻāĻž, āĻĢāϰā§āϏā§āĻ āĻŽāύāϏā§āύ - <strong>āύā§āĻāĻĢā§āϞāĻŋāĻā§āϏ</strong> <a href="https://netflixtechblog.com/introducing-dispatch-da4b8a2a8072" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+"_āĻāĻŽāĻŋ **FastAPI** āύāĻŋāϝāĻŧā§ āĻāĻžāĻāĻĻā§āϰ āϏāĻŽāĻžāύ āĻā§āϏāĻžāĻšāĻŋāϤāĨ¤ āĻāĻāĻŋ āĻā§āĻŦāĻ āĻŽāĻāĻžāϰ!_"
+
+<div style="text-align: right; margin-right: 10%;">āĻŦā§āϰāĻžāϝāĻŧāĻžāύ āĻāĻā§āύ - <strong><a href="https://pythonbytes.fm/episodes/show/123/time-to-right-the-py-wrongs?time_in_sec=855" target="_blank">āĻĒāĻžāĻāĻĨāύ āĻŦāĻžāĻāĻāϏ</a> āĻĒāĻĄāĻāĻžāϏā§āĻ āĻšā§āϏā§āĻ</strong> <a href="https://twitter.com/brianokken/status/1112220079972728832" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+"\_āϏāϤā§āϝāĻŋāĻ, āĻāĻĒāύāĻŋ āϝāĻž āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ āϤāĻž āĻā§āĻŦ āĻŽāĻāĻŦā§āϤ āĻāĻŦāĻ āĻĒāϰāĻŋāĻĒā§āϰā§āύ⧎ āĻ
āύā§āĻ āĻāĻĒāĻžāϝāĻŧā§, āĻāĻŽāĻŋ āϝāĻž **Hug** āĻ āĻāϰāϤ⧠āĻā§ā§ā§āĻāĻŋāϞāĻžāĻŽ - āϤāĻž āĻāĻžāĻāĻā§ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĻā§āĻā§ āĻāĻŽāĻŋ āϏāϤā§āϝāĻŋāĻ āĻ
āύā§āĻĒā§āϰāĻžāύāĻŋāϤ⧎\_"
+
+<div style="text-align: right; margin-right: 10%;">āĻāĻŋāĻŽā§āĻĨāĻŋ āĻā§āϰāϏāϞ⧠- <strong><a href="https://www.hug.rest/" target="_blank">Hug</a> āϏā§āϰāώā§āĻāĻž</strong> <a href="https://news.ycombinator.com/item?id=19455465" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+"āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ REST API āϤā§āϰāĻŋāϰ āĻāύā§āϝ āĻāĻāĻāĻŋ **āĻāϧā§āύāĻŋāĻ āĻĢā§āϰā§āĻŽāĻā§āĻžāϰā§āĻ** āĻļāĻŋāĻāϤ⧠āĻāĻžāύ, āϤāĻžāĻšāϞ⧠**FastAPI** āĻĻā§āĻā§āύ [...] āĻāĻāĻŋ āĻĻā§āϰā§āϤ, āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻšāĻ āĻāĻŦāĻ āĻļāĻŋāĻāϤā§āĻ āϏāĻšāĻ [...]\_"
+
+"_āĻāĻŽāϰāĻž āĻāĻŽāĻžāĻĻā§āϰ **APIs** [...] āĻāϰ āĻāύā§āϝ **FastAPI**- āϤ⧠āĻāϏā§āĻāĻŋ [...] āĻāĻŽāĻŋ āĻŽāύ⧠āĻāϰāĻŋ āĻāĻĒāύāĻŋāĻ āĻāĻāĻŋ āĻĒāĻāύā§āĻĻ āĻāϰāĻŦā§āύ [...]_"
+
+<div style="text-align: right; margin-right: 10%;">āĻāύā§āϏ āĻŽāύā§āĻāĻžāύāĻŋ - āĻŽā§āϝāĻžāĻĨāĻŋāĻ āĻšā§āύāĻŋāĻŦāĻžāϞ - <strong><a href="https://explosion.ai" target="_blank">Explosion AI</a> āĻĒā§āϰāϤāĻŋāώā§āĻ āĻžāϤāĻž - <a href="https://spacy.io" target="_blank">spaCy</a> āϏā§āϰāώā§āĻāĻž</strong> <a href="https://twitter.com/_inesmontani/status/1144173225322143744" target="_blank"><small>(ref)</small></a> - <a href="https://twitter.com/honnibal/status/1144031421859655680" target="_blank"><small>(ref)</small></a></div>
+
+---
+
+## **Typer**, CLI āĻāϰ āĻāύā§āϝ FastAPI
+
+<a href="https://typer.tiangolo.com" target="_blank"><img src="https://typer.tiangolo.com/img/logo-margin/logo-margin-vector.svg" style="width: 20%;"></a>
+
+āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ <abbr title="Command Line Interface">CLI</abbr> āĻ
ā§āϝāĻžāĻĒ āĻŦāĻžāύāĻžāϤ⧠āĻāĻžāύ, āϝāĻž āĻāĻŋāύāĻž āĻā§ā§āĻŦ API āĻāϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻāĻžāϰā§āĻŽāĻŋāύāĻžāϞ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻšāĻŦā§, āϤāĻžāĻšāϞ⧠āĻĻā§āĻā§āύ<a href="https://typer.tiangolo.com/" class="external-link" target="_blank">**Typer**</a>.
+
+**āĻāĻžāĻāĻĒāĻžāϰ** āĻšāϞ FastAPI āĻāϰ āĻā§āĻ āĻāĻžāĻā§ā§āϰ āĻŽāϤāĨ¤ āĻāĻŦāĻ āĻāĻāĻŋāϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻāĻŋāϞ **CLIs āĻāϰ FastAPI** āĻšāĻā§āĻžāĨ¤ â¨ī¸ đ
+
+## āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāϤāĻž āĻā§āϞā§
+
+Python 3.7+
+
+FastAPI āĻāĻŋāĻā§ āĻĻāĻžāύāĻŦā§āĻĻā§āϰ āĻāĻžāĻāϧ⧠āĻĻāĻžāĻāĻĄāĻŧāĻŋāϝāĻŧā§ āĻāĻā§:
+
+- <a href="https://www.starlette.io/" class="external-link" target="_blank">Starlette</a> āĻāϝāĻŧā§āĻŦ āĻ
āĻāĻļā§āϰ āĻāύā§āϝ.
+- <a href="https://pydantic-docs.helpmanual.io/" class="external-link" target="_blank">Pydantic</a> āĻĄā§āĻāĻž āĻ
āĻāĻļāĻā§āϞāĻŋāϰ āĻāύā§āϝ.
+
+## āĻāύāϏā§āĻāϞā§āĻļāύ āĻĒā§āϰāĻā§āϰāĻŋā§āĻž
+
+<div class="termy">
+
+```console
+$ pip install fastapi
+
+---> 100%
+```
+
+</div>
+
+āĻāĻĒāύāĻžāϰ āĻāĻāĻāĻŋ ASGI āϏāĻžāϰā§āĻāĻžāϰā§āϰāĻ āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāĻŦā§, āĻĒā§āϰā§āĻĄāĻžāĻāĻļāύā§āϰ āĻāύā§āϝ <a href="https://www.uvicorn.org" class="external-link" target="_blank">Uvicorn</a> āĻ
āĻĨāĻŦāĻž <a href="https://gitlab.com/pgjones/hypercorn" class="external-link" target="_blank">Hypercorn</a>.
+
+<div class="termy">
+
+```console
+$ pip install "uvicorn[standard]"
+
+---> 100%
+```
+
+</div>
+
+## āĻāĻĻāĻžāĻšāϰāĻŖ
+
+### āϤā§āϰāĻŋ
+
+- `main.py` āύāĻžāĻŽā§ āĻāĻāĻāĻŋ āĻĢāĻžāĻāϞ āϤā§āϰāĻŋ āĻāϰā§āύ:
+
+```Python
+from typing import Union
+
+from fastapi import FastAPI
+
+app = FastAPI()
+
+
+@app.get("/")
+def read_root():
+ return {"Hello": "World"}
+
+
+@app.get("/items/{item_id}")
+def read_item(item_id: int, q: Union[str, None] = None):
+ return {"item_id": item_id, "q": q}
+```
+
+<details markdown="1">
+<summary>āĻ
āĻĨāĻŦāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ <code>async def</code>...</summary>
+
+āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ āĻā§āĻĄ `async` / `await`, āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āϤāĻžāĻšāϞ⧠`async def` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ:
+
+```Python hl_lines="9 14"
+from typing import Union
+
+from fastapi import FastAPI
+
+app = FastAPI()
+
+
+@app.get("/")
+async def read_root():
+ return {"Hello": "World"}
+
+
+@app.get("/items/{item_id}")
+async def read_item(item_id: int, q: Union[str, None] = None):
+ return {"item_id": item_id, "q": q}
+```
+
+**āĻā§āĻāĻž**:
+
+āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āύāĻž āĻāĻžāύā§āύ, _"āϤāĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§?"_ āĻŦāĻŋāĻāĻžāĻāĻāĻŋ āĻĻā§āĻā§āύ <a href="https://fastapi.tiangolo.com/async/#in-a-hurry" target="_blank">`async` āĻāĻŦāĻ `await` āύāĻĨāĻŋāϰ āĻŽāϧā§āϝ⧠āĻĻā§āĻā§āύ </a>.
+
+</details>
+
+### āĻāĻāĻŋ āĻāĻžāϞāĻžāύ
+
+āϏāĻžāϰā§āĻāĻžāϰ āĻāĻžāϞ⧠āĻāϰā§āύ:
+
+<div class="termy">
+
+```console
+$ uvicorn main:app --reload
+
+INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
+INFO: Started reloader process [28720]
+INFO: Started server process [28722]
+INFO: Waiting for application startup.
+INFO: Application startup complete.
+```
+
+</div>
+
+<details markdown="1">
+<summary>āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ <code>uvicorn main:app --reload</code>...</summary>
+
+`uvicorn main:app` āύāĻŋāϰā§āĻĻā§āĻļāύāĻžāĻāĻŋ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āĻāĻžāϝāĻŧ:
+
+- `main`: āĻĢāĻžāĻāϞ `main.py` (āĻĒāĻžāĻāĻĨāύ "āĻŽāĻĄāĻŋāĻāϞ")āĨ¤
+- `app`: `app = FastAPI()` āϞāĻžāĻāύ āĻĻāĻŋāϝāĻŧā§ `main.py` āĻāϰ āĻāĻŋāϤāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻ
āĻŦāĻā§āĻā§āĻāĨ¤
+- `--reload`: āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύā§āϰ āĻĒāϰ⧠āϏāĻžāϰā§āĻāĻžāϰ āĻĒā§āύāϰāĻžāϝāĻŧ āĻāĻžāϞ⧠āĻāϰā§āύāĨ¤ āĻāĻāĻŋ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĄā§āĻā§āϞāĻĒāĻŽā§āύā§āĻ āĻāϰ āϏāĻŽā§ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύāĨ¤
+
+</details>
+
+### āĻāĻāĻž āĻā§āĻ āĻāϰā§āύ
+
+āĻāĻĒāύāĻžāϰ āĻŦā§āϰāĻžāĻāĻāĻžāϰ āĻā§āϞā§āύ <a href="http://127.0.0.1:8000/items/5?q=somequery" class="external-link" target="_blank">http://127.0.0.1:8000/items/5?q=somequery</a> āĻāĨ¤
+
+āĻāĻĒāύāĻŋ JSON āϰā§āϏāĻĒāύā§āϏ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ:
+
+```JSON
+{"item_id": 5, "q": "somequery"}
+```
+
+āĻāĻĒāύāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ API āϤā§āϰāĻŋ āĻāϰā§āĻā§āύ āϝāĻž:
+
+- `/` āĻāĻŦāĻ `/items/{item_id}` _paths_ āĻ HTTP āĻ
āύā§āϰā§āϧ āĻā§āϰāĻšāĻŖ āĻāϰā§āĨ¤
+- āĻāĻāϝāĻŧ *path*āĻ `GET` <em>āĻ
āĻĒāĻžāϰā§āĻļāύ</em> āύā§āϝāĻŧ ( āϝāĻž HTTP _methods_ āύāĻžāĻŽā§āĻ āĻĒāϰāĻŋāĻāĻŋāϤ)āĨ¤
+- _path_ `/items/{item_id}`-āĻ āĻāĻāĻāĻŋ _path āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ_ `item_id` āĻāĻā§ āϝāĻž āĻāĻŋāύāĻž `int` āĻšāϤ⧠āĻšāĻŦā§āĨ¤
+- _path_ `/items/{item_id}`-āĻāϰ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ `str` _query āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ_ `q` āĻāĻā§āĨ¤
+
+### āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ
+
+āĻāĻāύ āϝāĻžāύ <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a>.
+
+āĻāĻĒāύāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻžāĻŦā§ āĻĒā§āϰāϏā§āϤā§āϤ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ (<a href="https://github.com/swagger-api/swagger-ui" class="external-link" target="_blank">Swagger UI</a> āĻĒā§āϰāĻĻāϤā§āϤ):
+
+
+
+### āĻŦāĻŋāĻāϞā§āĻĒ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ
+
+āĻāĻŦāĻ āĻāĻāύ <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> āĻ āϝāĻžāύ.
+
+āĻāĻĒāύāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻžāĻŦā§ āĻĒā§āϰāϏā§āϤā§āϤ āĻŦāĻŋāĻāϞā§āĻĒ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύ (<a href="https://github.com/Rebilly/ReDoc" class="external-link" target="_blank">ReDoc</a> āĻĒā§āϰāĻĻāϤā§āϤ):
+
+
+
+## āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ āĻāĻĒāĻā§āϰā§āĻĄ
+
+āĻāĻāύ `main.py` āĻĢāĻžāĻāϞāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ āϝā§āύ āĻāĻāĻŋ `PUT` āϰāĻŋāĻā§ā§ā§āϏā§āĻ āĻĨā§āĻā§ āĻŦāĻĄāĻŋ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āĨ¤
+
+Python āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ, Pydantic āĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻŦāĻĄāĻŋ āĻā§āώāĻŖāĻž āĻāϰā§āύāĨ¤
+
+```Python hl_lines="4 9-12 25-27"
+from typing import Union
+
+from fastapi import FastAPI
+from pydantic import BaseModel
+
+app = FastAPI()
+
+
+class Item(BaseModel):
+ name: str
+ price: float
+ is_offer: Union[bool, None] = None
+
+
+@app.get("/")
+def read_root():
+ return {"Hello": "World"}
+
+
+@app.get("/items/{item_id}")
+def read_item(item_id: int, q: Union[str, None] = None):
+ return {"item_id": item_id, "q": q}
+
+
+@app.put("/items/{item_id}")
+def update_item(item_id: int, item: Item):
+ return {"item_name": item.name, "item_id": item_id}
+```
+
+āϏāĻžāϰā§āĻāĻžāϰāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻĒā§āύāϰāĻžāϝāĻŧ āϞā§āĻĄ āĻšāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ (āĻāĻžāϰāĻŖ āĻāĻĒāύāĻŋ āĻāĻĒāϰā§āϰ `uvicorn` āĻāĻŽāĻžāύā§āĻĄā§ `--reload` āϝā§āĻ āĻāϰā§āĻā§āύ)āĨ¤
+
+### āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻāύā§āύā§āϤāĻāϰāĻŖ
+
+āĻāĻāύ <a href="http://127.0.0.1:8000/docs" class="external-link" target="_blank">http://127.0.0.1:8000/docs</a> āĻāĻĄāĻĄā§āϰā§āϏ⧠āϝāĻžāύ.
+
+- āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋāĻāĻŋ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ āĻāύā§āύā§āϤ āĻšāϝ⧠āϝāĻžāĻŦā§, āύāϤā§āύ āĻŦāĻĄāĻŋ āϏāĻš:
+
+
+
+- "Try it out" āĻŦāĻžāĻāύ⧠āĻāĻžāĻĒā§āύ, āĻāĻāĻŋ āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻžāĻŽāĻŋāĻāĻžāϰāĻā§āϞ⧠āĻĒā§āϰāĻŖ āĻāϰāϤ⧠āĻāĻŦāĻ API āĻāϰ āϏāĻžāĻĨā§ āϏāϰāĻžāϏāϰāĻŋ āĻā§āϰāĻŋā§āĻž-āĻāϞāĻžāĻĒ āĻāϰāϤ⧠āĻĻāĻŋāĻŦā§:
+
+
+
+- āϤāĻžāϰāĻĒāϰ⧠"Execute" āĻŦāĻžāĻāύ⧠āĻāĻžāĻĒā§āύ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āĻāĻĒāύāĻžāϰ API āĻāϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻ āĻāϰāĻŦā§, āĻĒā§āϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻĒāĻžāĻ āĻžāĻŦā§, āĻĢāϞāĻžāĻĢāϞāĻā§āϞāĻŋ āĻĒāĻžāĻŦā§ āĻāĻŦāĻ āϏā§āĻā§āϞāĻŋ āĻĒāϰā§āϰāĻĻāĻžā§ āĻĻā§āĻāĻžāĻŦā§:
+
+
+
+### āĻŦāĻŋāĻāϞā§āĻĒ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻāĻĒāĻā§āϰā§āĻĄ
+
+āĻāĻŦāĻ āĻāĻāύ <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> āĻ āϝāĻžāύāĨ¤
+
+- āĻŦāĻŋāĻāϞā§āĻĒ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋāϤā§āĻ āύāϤā§āύ āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻāĻŦāĻ āĻŦāĻĄāĻŋ āĻĒā§āϰāϤāĻŋāĻĢāϞāĻŋāϤ āĻšāĻŦā§:
+
+
+
+### āϏāĻāĻā§āώāĻŋāĻĒā§āϤāĻāϰāĻŖ
+
+āϏāĻāĻā§āώā§āĻĒā§, āĻāĻĒāύāĻŋ **āĻļā§āϧ⧠āĻāĻāĻŦāĻžāϰ** āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰā§āϰ āϧāϰāύ, āĻŦāĻĄāĻŋ āĻāϤā§āϝāĻžāĻĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻšāĻŋāϏā§āĻŦā§ āĻā§āώāĻŖāĻž āĻāϰā§āύāĨ¤
+
+āĻāĻĒāύāĻŋ āϏā§āĻāĻŋ āĻāϧā§āύāĻŋāĻ āĻĒāĻžāĻāĻĨāύā§āϰ āϏāĻžāĻĨā§ āĻāϰā§āύāĨ¤
+
+āĻāĻĒāύāĻžāĻā§ āύāϤā§āύ āĻāϰ⧠āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻā§āύ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāϰ āĻŦāĻžāĻā§āϝ āĻāĻ āύ, āĻĢāĻžāĻāĻļāύ āĻŦāĻž āĻā§āϞāĻžāϏ āĻāĻŋāĻā§āĻ āĻļāĻŋāĻāϤ⧠āĻšāĻā§āĻā§ āύāĻžāĨ¤
+
+āĻļā§āϧā§āĻ āĻāϧā§āύāĻŋāĻ **Python 3.6+**
+
+āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, `int` āĻāϰ āĻāύā§āϝ:
+
+```Python
+item_id: int
+```
+
+āĻ
āĻĨāĻŦāĻž āĻāϰāĻ āĻāĻāĻŋāϞ `Item` āĻŽāĻĄā§āϞā§āϰ āĻāύā§āϝ:
+
+```Python
+item: Item
+```
+
+...āĻāĻŦāĻ āϏā§āĻ āĻāĻāĻ āĻā§āώāĻŖāĻžāϰ āϏāĻžāĻĨā§ āĻāĻĒāύāĻŋ āĻĒāĻžāĻŦā§āύ:
+
+- āĻāĻĄāĻŋāĻāϰ āϏāĻžāĻšāĻžāϝā§āϝ, āϝā§āĻŽāύ
+ - āϏāĻŽāĻžāĻĒā§āϤāĻŋāĨ¤
+ - āϧāϰāĻŖ āϝāĻžāĻāĻžāĻ
+- āϤāĻĨā§āϝ āϝāĻžāĻāĻžāĻāĻāϰāĻŖ:
+ - āĻĄā§āĻāĻž āĻ
āĻŦā§āϧ āĻšāϞ⧠āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻāĻŦāĻ āĻĒāϰāĻŋāώā§āĻāĻžāϰ āϤā§āϰā§āĻāĻŋāϰ āύāĻŋāϰā§āĻĻā§āĻļāύāĻžāĨ¤
+ - āĻāĻŽāύāĻāĻŋ āĻāĻā§āϰāĻāĻžāĻŦā§ āύā§āϏā§āĻ āĻāϰāĻž JSON āĻ
āĻŦāĻā§āĻā§āĻā§āϰ āĻāύā§āϝ āĻŦā§āϧāϤāĻžāĨ¤
+- āĻĒā§āϰā§āϰāĻŋāϤ āϤāĻĨā§āϝ <abbr title="āϝāĻž āĻĒāϰāĻŋāĻāĻŋāϤ: serialization, parsing, marshalling">āϰā§āĻĒāĻžāύā§āϤāϰ</abbr>: āϝāĻž āύā§āĻāĻā§āĻžāϰā§āĻ āĻĨā§āĻā§ āĻĒāĻžāĻāĻĨāύā§āϰ āϤāĻĨā§āϝ āĻāĻŦāĻ āϧāϰāύ⧠āĻāϏā§, āĻāĻŦāĻ āϏā§āĻāĻžāύ āĻĨā§āĻā§ āĻĒā§āĻž:
+
+ - JSONāĨ¤
+ - āĻĒāĻžāĻĨ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĨ¤
+ - āĻā§ā§ā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĨ¤
+ - āĻā§āĻāĻŋāĻ
+ - āĻšā§āĻĄāĻžāϰ
+ - āĻĢāϰā§āĻŽ
+ - āĻĢāĻžāĻāϞ
+
+- āĻāĻāĻāĻĒā§āĻ āĻĄā§āĻāĻžāϰ <abbr title="āϝāĻž āĻĒāϰāĻŋāĻāĻŋāϤ: serialization, parsing, marshalling">āϰā§āĻĒāĻžāύā§āϤāϰ</abbr>: āĻĒāĻžāĻāĻĨāύ āĻĄā§āĻāĻž āĻāĻŦāĻ āĻāĻžāĻāĻĒ āĻĨā§āĻā§ āύā§āĻāĻāϝāĻŧāĻžāϰā§āĻ āĻĄā§āĻāĻžāϤ⧠āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰāĻž (JSON āĻšāĻŋāϏāĻžāĻŦā§):
+ -āĻĒāĻžāĻāĻĨāύ āĻāĻžāĻāĻĒā§ āϰā§āĻĒāĻžāύā§āϤāϰ āĻāϰā§āύ (`str`, `int`, `float`, `bool`, `list`, āĻāϤā§āϝāĻžāĻĻāĻŋ)āĨ¤
+ - `datetime` āĻ
āĻŦāĻā§āĻā§āĻāĨ¤
+ - `UUID` objeāĻ
āĻŦāĻā§āĻā§āĻctsāĨ¤
+ - āĻĄāĻžāĻāĻžāĻŦā§āϏ āĻŽāĻĄā§āϞāĨ¤
+ - ...āĻāĻŦāĻ āĻāϰ⧠āĻ
āύā§āĻāĨ¤
+- āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ API āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ, 2āĻāĻŋ āĻŦāĻŋāĻāϞā§āĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏ āϏāĻš:
+ - āϏā§āϝāĻŧāĻžāĻāĻžāϰ āĻāĻ āĻāĻ (Swagger UI)āĨ¤
+ - āϰāĻŋāĻĄāĻ (ReDoc)āĨ¤
+
+---
+
+āĻĒā§āϰā§āĻŦāĻŦāϰā§āϤ⧠āĻā§āĻĄ āĻāĻĻāĻžāĻšāϰāĻŖā§ āĻĢāĻŋāϰ⧠āĻāϏāĻž āϝāĻžāĻ, **FastAPI** āϝāĻž āĻāϰāĻŦā§:
+
+- `GET` āĻāĻŦāĻ `PUT` āĻ
āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āĻĒāĻĨā§ `item_id` āĻāĻā§ āĻāĻŋāύāĻž āϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰāĻŦā§āĨ¤
+- `GET` āĻāĻŦāĻ `PUT` āĻ
āύā§āϰā§āϧā§āϰ āĻāύā§āϝ `item_id` āĻāĻžāĻāĻĒ `int` āĻāϰ āĻšāϤ⧠āĻšāĻŦā§ āϤāĻž āϝāĻžāĻāĻžāĻ āĻāϰāĻŦā§āĨ¤
+ - āϝāĻĻāĻŋ āύāĻž āĻšāϝāĻŧ āϤāĻŦā§ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻāĻāĻāĻŋ āĻāĻĒāϝā§āĻā§āϤ, āĻĒāϰāĻŋāώā§āĻāĻžāϰ āϤā§āϰā§āĻāĻŋ āĻĻā§āĻāϤ⧠āĻĒāĻžāĻŦā§āύāĨ¤
+- `GET` āĻ
āύā§āϰā§āϧā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ āĻā§āϝā§āϝāĻŧā§āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āύāĻžāĻŽāĻ `q` (āϝā§āĻŽāύ `http://127.0.0.1:8000/items/foo?q=somequery`) āĻāĻā§ āĻāĻŋ āϤāĻž āĻā§āĻ āĻāϰāĻŦā§āĨ¤
+ - āϝā§āĻšā§āϤ⧠`q` āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰāĻāĻŋ `= None` āĻĻāĻŋāϝāĻŧā§ āĻā§āώāĻŖāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϤāĻžāĻ āĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻāĨ¤
+ - `None` āĻāĻžāĻĄāĻŧāĻž āĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻšāϤ⧠(āϝā§āĻŽāύ `PUT` āĻāϰ āĻā§āώā§āϤā§āϰ⧠āĻšā§ā§āĻā§)āĨ¤
+- `/items/{item_id}` āĻāϰ āĻāύā§āϝ `PUT` āĻ
āύā§āϰā§āϧā§āϰ āĻŦāĻĄāĻŋ JSON āĻšāĻŋāϏāĻžāĻŦā§ āĻĒāĻĄāĻŧā§āύ:
+ - āϞāĻā§āώ āĻāϰā§āύ, `name` āĻāĻāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻ
ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦāĻŋāĻŦā§āĻāύāĻž āĻāϰā§āĻā§ āĻāĻŦāĻ āĻāĻāĻŋ `str` āĻšāϤ⧠āĻšāĻŦā§āĨ¤
+ - āϞāĻā§āώ āĻāϰā§āύ āĻāĻāĻžāύā§, `price` āĻ
ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻāĻāĻŋ āĻāĻŦāĻļā§āϝāĻ āĻāĻŦāĻ āĻāĻāĻŋ `float` āĻšāϤ⧠āĻšāĻŦā§āĨ¤
+ - āϞāĻā§āώ āĻāϰā§āύ `is_offer` āĻāĻāĻāĻŋ āĻāĻā§āĻāĻŋāĻ āĻ
ā§āϝāĻžāĻā§āϰāĻŋāĻŦāĻŋāĻāĻ āĻāĻŦāĻ āĻāĻāĻŋ `bool` āĻšāϤ⧠āĻšāĻŦā§ āϝāĻĻāĻŋ āĻāĻĒāϏā§āĻĨāĻŋāϤ āĻĨāĻžāĻā§āĨ¤
+ - āĻāĻ āϏāĻŦāĻāĻŋ āĻāĻā§āϰāĻāĻžāĻŦā§ āĻ
āĻŦāϏā§āĻĨāĻžāύāϰāϤ JSON āĻ
āĻŦāĻā§āĻā§āĻāĻā§āϞāĻŋāϤā§āĻ āĻāĻžāĻ āĻāϰāĻŦā§āĨ¤
+- āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧāĻāĻžāĻŦā§ JSON āĻšāϤ⧠āĻāĻŦāĻ JSON āĻĨā§āĻā§ āĻāύāĻāĻžāϰā§āĻ āĻāϰā§āύāĨ¤
+- OpenAPI āĻĻāĻŋāϝāĻŧā§ āϏāĻŦāĻāĻŋāĻā§ āĻĄāĻā§āĻŽā§āύā§āĻ āĻāϰā§āύ, āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϝā§āϤ⧠āĻĒāĻžāϰā§:
+ - āĻā§āϰāĻŋā§āĻžāĻļā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋāĨ¤
+ - āĻ
āύā§āĻ āĻāĻžāώāĻžāϰ āĻāύā§āϝ āϏā§āĻŦāϝāĻŧāĻāĻā§āϰāĻŋāϝāĻŧ āĻā§āϞāĻžāϝāĻŧā§āύā§āĻ āĻā§āĻĄ āϤā§āϰāĻŋāϰ āĻŦā§āϝāĻŦāϏā§āĻĨāĻžāĨ¤
+- āϏāϰāĻžāϏāϰāĻŋ 2āĻāĻŋ āĻā§āϰāĻŋā§āĻžāĻļā§āϞ āύāĻŋāϰā§āĻĻā§āĻļāĻŋāĻāĻž āύāĻĨāĻŋ āĻāϝāĻŧā§āĻŦ āĻĒā§āώā§āĻ āĻĒā§āϰāĻĻāĻžāύ āĻāϰāĻž āĻšā§ā§āĻā§āĨ¤
+
+---
+
+āĻāĻŽāϰāĻž āĻāϤāĻā§āώāύ āĻļā§āϧ⧠āĻāϰ āĻĒā§āώā§āĻ āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻĒāύāĻŋ āĻāϤāĻŽāϧā§āϝā§āĻ āĻāĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϤāĻžāϰ āϧāĻžāϰāĻŖāĻžāĻ āĻĒā§ā§ā§ āĻāĻŋā§ā§āĻā§āύāĨ¤
+
+āύāĻŋāĻŽā§āύā§āĻā§āϤ āϞāĻžāĻāύ āĻā§āϞ⧠āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āύ:
+
+```Python
+ return {"item_name": item.name, "item_id": item_id}
+```
+
+...āĻĒā§āϰā§āĻŦā§:
+
+```Python
+ ... "item_name": item.name ...
+```
+
+...āĻĒāϰāĻŦāϰā§āϤā§āϤā§:
+
+```Python
+ ... "item_price": item.price ...
+```
+
+...āĻāĻŦāĻ āĻĻā§āĻā§āύ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻĒāύāĻžāϰ āĻāĻĄāĻŋāĻāϰ āĻāĻĒāĻžāĻĻāĻžāύāĻā§āϞā§āĻā§ āϏā§āĻāĻā§āϰāĻŋā§āĻāĻžāĻŦā§-āϏāĻŽā§āĻĒāύā§āύ āĻāϰāĻŦā§ āĻāĻŦāĻ āϤāĻžāĻĻā§āϰ āϧāϰāύ āĻāĻžāύāϤ⧠āĻĒāĻžāϰāĻŦā§:
+
+
+
+āĻāϰāĻ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āϏāĻŽā§āĻĒāύā§āύ āĻāĻĻāĻžāĻšāϰāĻŖā§āϰ āĻāύā§āϝ, āĻĻā§āĻā§āύ <a href="https://fastapi.tiangolo.com/tutorial/">āĻāĻŋāĻāĻā§āϰāĻŋā§āĻžāϞ - āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻāĻĄ</a>.
+
+**āϏā§āĻĒā§āϞāĻžāϰ āϏāϤāϰā§āĻāϤāĻž**: āĻāĻŋāĻāĻā§āϰāĻŋā§āĻžāϞ - āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻāĻžāĻāĻĄ āύāĻŋāĻŽā§āύā§āĻā§āϤ āĻŦāĻŋāώā§āĻā§āϞāĻŋ āĻ
āύā§āϤāϰā§āĻā§āĻā§āϤ āĻāϰā§:
+
+- **āĻšā§āĻĄāĻžāϰ**, **āĻā§āĻāĻŋāĻ**, **āĻĢāϰā§āĻŽ āĻĢāĻŋāϞā§āĻĄ** āĻāĻŦāĻ **āĻĢāĻžāĻāϞāĻā§āϞāĻŋ** āĻāĻŽāύ āĻ
āύā§āϝāĻžāύā§āϝ āĻāĻžā§āĻāĻž āĻĨā§āĻā§ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāĻāĻžāϰ āĻā§āώāĻŖāĻž āĻāϰāĻžāĨ¤
+- `maximum_length` āĻŦāĻž `regex` āĻāϰ āĻŽāϤ⧠**āϝāĻžāĻāĻžāĻāĻāϰāĻŖ āĻŦāĻžāϧāĻžāĻŽā§āĻā§āϤāĻŋ** āϏā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āĻāĻŋāĻāĻžāĻŦā§, āϤāĻž āύāĻŋā§ā§ āĻāϞā§āĻāύāĻž āĻāϰāĻž āĻšāĻŦā§āĨ¤
+- āĻāĻāĻāĻŋ āĻā§āĻŦ āĻļāĻā§āϤāĻŋāĻļāĻžāϞ⧠āĻāĻŦāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻšāĻ <abbr title="also known as components, resources, providers, services, injectables">āĻĄāĻŋāĻĒā§āύā§āĻĄā§āύā§āϏāĻŋ āĻāύāĻā§āĻāĻļāύ</abbr> āĻĒāĻĻā§āϧāϤāĻŋ
+- **OAuth2** āĻāĻŦāĻ **JWT āĻā§āĻā§āύ** āĻāĻŦāĻ **HTTP Basic** auth āϏāĻš āύāĻŋāϰāĻžāĻĒāϤā§āϤāĻž āĻāĻŦāĻ āĻ
āύā§āĻŽā§āĻĻāύāĻĒā§āϰāĻžāĻĒā§āϤāĻŋ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āĻŦāĻŋāώā§āϏāĻŽā§āĻšā§āϰ āĻāĻĒāϰāĨ¤
+- **āĻāĻā§āϰāĻāĻžāĻŦā§ āĻ
āĻŦāϏā§āĻĨāĻžāύāϰāϤ JSON āĻŽāĻĄā§āϞ** āĻā§āώāĻŖāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āĻāϰāĻ āĻāύā§āύāϤ (āĻāĻŋāύā§āϤ⧠āϏāĻŽāĻžāύ āϏāĻšāĻ) āĻā§āĻļāϞ (Pydantic āĻā§ āϧāύā§āϝāĻŦāĻžāĻĻ)āĨ¤
+- āĻāϰ⧠āĻ
āϤāĻŋāϰāĻŋāĻā§āϤ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ (āϏā§āĻāĻžāϰāϞā§āĻāĻā§ āϧāύā§āϝāĻŦāĻžāĻĻ) āĻšāĻŋāϏāĻžāĻŦā§:
+ - **WebSockets**
+ - **GraphQL**
+ - HTTPX āĻāĻŦāĻ `pytest` āĻāĻŋāϤā§āϤāĻŋāĻ āĻ
āϤā§āϝāύā§āϤ āϏāĻšāĻ āĻĒāϰā§āĻā§āώāĻž
+ - **CORS**
+ - **Cookie Sessions**
+ - ...āĻāĻŦāĻ āĻāϰā§āĨ¤
+
+## āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž
+
+āϏā§āĻŦāĻžāϧā§āύ TechEmpower Benchmarks āĻĻā§āĻāĻžāϝāĻŧ āϝ⧠**FastAPI** āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύāĻā§āϞāĻŋ Uvicorn-āĻāϰ āĻ
āϧā§āύ⧠āĻāϞāĻŽāĻžāύ āĻĻā§āϰā§āϤāϤāĻŽ<a href="https://www.techempower.com/benchmarks/#section=test&runid=7464e520-0dc2-473d-bd34-dbdfd7e85911&hw=ph&test=query&l=zijzen-7" class="external-link" target="_blank">āĻĒāĻžāĻāĻĨāύ āĻĢā§āϰā§āĻŽāĻāϝāĻŧāĻžāϰā§āĻāĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ,</a> āĻļā§āϧā§āĻŽāĻžāϤā§āϰ Starlette āĻāĻŦāĻ Uvicorn-āĻāϰ āĻĒāϰ (FastAPI āĻĻā§āĻŦāĻžāϰāĻž āĻ
āĻā§āϝāύā§āϤāϰā§āĻŖāĻāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ)āĨ¤ (\*)
+
+āĻāĻāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻŦā§āĻāϤā§, āĻĻā§āĻā§āύ <a href="https://fastapi.tiangolo.com/benchmarks/" class="internal-link" target="_blank">Benchmarks</a>.
+
+## āĻāĻā§āĻāĻŋāĻ āύāĻŋāϰā§āĻāϰāĻļā§āϞāϤāĻž
+
+Pydantic āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ:
+
+- <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - āĻĻā§āϰā§āϤ JSON āĻāϰ āĻāύā§āϝ <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>.
+- <a href="https://github.com/JoshData/python-email-validator" target="_blank"><code>email_validator</code></a> - āĻāĻŽā§āϞ āϝāĻžāĻāĻžāĻāĻāϰāĻŖā§āϰ āĻāύā§āϝāĨ¤
+
+āϏā§āĻāĻžāϰāϞā§āĻ āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ:
+
+- <a href="https://www.python-httpx.org" target="_blank"><code>httpx</code></a> - āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ `TestClient` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āĻāĻŦāĻļā§āϝāĻāĨ¤
+- <a href="https://jinja.palletsprojects.com" target="_blank"><code>jinja2</code></a> - āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒā§āϰāĻĻāϤā§āϤ āĻā§āĻŽāĻĒā§āϞā§āĻ āϰā§āĻĒāϰā§āĻāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
+- <a href="https://andrew-d.github.io/python-multipart/" target="_blank"><code>python-multipart</code></a> - āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĢāϰā§āĻŽ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻāϰāϤ⧠āĻāĻžāύ āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύ <abbr title="converting the string that comes from an HTTP request into Python data">"parsing"</abbr>, `request.form()` āϏāĻšāĨ¤
+- <a href="https://pythonhosted.org/itsdangerous/" target="_blank"><code>itsdangerous</code></a> - `SessionMiddleware` āϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
+- <a href="https://pyyaml.org/wiki/PyYAMLDocumentation" target="_blank"><code>pyyaml</code></a> - āϏā§āĻāĻžāϰāϞā§āĻā§āϰ SchemaGenerator āϏāĻžāĻĒā§āϰā§āĻ āĻāϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύ (āĻāĻĒāύāĻžāϰ āϏāĻŽā§āĻāĻžāĻŦāϤ FastAPI āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ)āĨ¤
+- <a href="https://graphene-python.org/" target="_blank"><code>graphene</code></a> - `GraphQLApp` āϏāĻšāĻžāϝāĻŧāϤāĻžāϰ āĻāύā§āϝ āĻĒā§āϰā§ā§āĻāύāĨ¤
+- <a href="https://github.com/esnme/ultrajson" target="_blank"><code>ujson</code></a> - āĻāĻĒāύāĻŋ `UJSONResponse` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
+
+FastAPI / Starlette āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āϝāĻŦāĻšā§āϤ:
+
+- <a href="https://www.uvicorn.org" target="_blank"><code>uvicorn</code></a> - āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻāύā§āϝ āϝāĻž āĻāĻĒāύāĻžāϰ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϞā§āĻĄ āĻāϰ⧠āĻāĻŦāĻ āĻĒāϰāĻŋāĻŦā§āĻļāύ āĻāϰā§āĨ¤
+- <a href="https://github.com/ijl/orjson" target="_blank"><code>orjson</code></a> - āĻāĻĒāύāĻŋ `ORJSONResponse` āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻāĻžāĻāϞ⧠āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
+
+āĻāĻĒāύāĻŋ āĻāĻ āϏāĻŦ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ `pip install fastapi[all]` āĻĻāĻŋā§ā§.
+
+## āϞāĻžāĻāϏā§āύā§āϏ
+
+āĻāĻ āĻĒā§āϰāĻā§āĻā§āĻ MIT āϞāĻžāĻāϏā§āύā§āϏ āύā§āϤāĻŋāĻŽāĻžāϞāĻžāϰ āĻ
āϧā§āύ⧠āĻļāϰā§āϤāĻžā§āĻŋāϤāĨ¤