Browse Source

🌐 Add Bengali translation for `docs/bn/docs/index.md` (#9177)

Co-authored-by: SebastiÃĄn Ramírez <tiangolo@gmail.com>
pull/10929/head
Fahad Md Kamal 1 year ago
committed by GitHub
parent
commit
06bf7781df
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 464
      docs/bn/docs/index.md
  2. 1
      docs/bn/mkdocs.yml

464
docs/bn/docs/index.md

@ -0,0 +1,464 @@
<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> āĻĒā§āϰāĻĻāĻ¤ā§āϤ):
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-01-swagger-ui-simple.png)
### āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ 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> āĻĒā§āϰāĻĻāĻ¤ā§āϤ):
![ReDoc](https://fastapi.tiangolo.com/img/index/index-02-redoc-simple.png)
## āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āφāĻĒāĻ—ā§āϰ⧇āĻĄ
āĻāĻ–āύ `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 āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž āύāĻĨāĻŋāϟāĻŋ āĻ¸ā§āĻŦāϝāĻŧāĻ‚āĻ•ā§āϰāĻŋāϝāĻŧāĻ­āĻžāĻŦ⧇ āωāĻ¨ā§āύ⧀āϤ āĻšāϝ⧇ āϝāĻžāĻŦ⧇, āύāϤ⧁āύ āĻŦāĻĄāĻŋ āϏāĻš:
![Swagger UI](https://fastapi.tiangolo.com/img/index/index-03-swagger-02.png)
- "Try it out" āĻŦāĻžāϟāύ⧇ āϚāĻžāĻĒ⧁āύ, āĻāϟāĻŋ āφāĻĒāύāĻžāϕ⧇ āĻĒ⧇āϰāĻžāĻŽāĻŋāϟāĻžāϰāϗ⧁āϞ⧋ āĻĒā§‚āϰāĻŖ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ API āĻāϰ āϏāĻžāĻĨ⧇ āϏāϰāĻžāϏāϰāĻŋ āĻ•ā§āϰāĻŋ⧟āĻž-āĻ•āϞāĻžāĻĒ āĻ•āϰāϤ⧇ āĻĻāĻŋāĻŦ⧇:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-04-swagger-03.png)
- āϤāĻžāϰāĻĒāϰ⧇ "Execute" āĻŦāĻžāϟāύ⧇ āϚāĻžāĻĒ⧁āύ, āĻŦā§āϝāĻŦāĻšāĻžāϰāĻ•āĻžāϰ⧀āϰ āχāĻ¨ā§āϟāĻžāϰāĻĢ⧇āϏ āφāĻĒāύāĻžāϰ API āĻāϰ āϏāĻžāĻĨ⧇ āϝ⧋āĻ—āĻžāϝ⧋āĻ— āĻ•āϰāĻŦ⧇, āĻĒ⧇āϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻĒāĻžāĻ āĻžāĻŦ⧇, āĻĢāϞāĻžāĻĢāϞāϗ⧁āϞāĻŋ āĻĒāĻžāĻŦ⧇ āĻāĻŦāĻ‚ āϏ⧇āϗ⧁āϞāĻŋ āĻĒāĻ°ā§āϰāĻĻāĻžā§Ÿ āĻĻ⧇āĻ–āĻžāĻŦ⧇:
![Swagger UI interaction](https://fastapi.tiangolo.com/img/index/index-05-swagger-04.png)
### āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ API āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž āύāĻĨāĻŋ āφāĻĒāĻ—ā§āϰ⧇āĻĄ
āĻāĻŦāĻ‚ āĻāĻ–āύ <a href="http://127.0.0.1:8000/redoc" class="external-link" target="_blank">http://127.0.0.1:8000/redoc</a> āĻ āϝāĻžāύāĨ¤
- āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻŋāĻ•āĻž āύāĻĨāĻŋāϤ⧇āĻ“ āύāϤ⧁āύ āĻ•ā§ā§Ÿā§‡āϰāĻŋ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻāĻŦāĻ‚ āĻŦāĻĄāĻŋ āĻĒā§āϰāϤāĻŋāĻĢāϞāĻŋāϤ āĻšāĻŦ⧇:
![ReDoc](https://fastapi.tiangolo.com/img/index/index-06-redoc-02.png)
### āϏāĻ‚āĻ•ā§āώāĻŋāĻĒā§āϤāĻ•āϰāĻŖ
āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇, āφāĻĒāύāĻŋ **āĻļ⧁āϧ⧁ āĻāĻ•āĻŦāĻžāϰ** āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ⧇āϰ āϧāϰāύ, āĻŦāĻĄāĻŋ āχāĻ¤ā§āϝāĻžāĻĻāĻŋ āĻĢāĻžāĻ‚āĻļāύ āĻĒā§āϝāĻžāϰāĻžāĻŽāĻŋāϟāĻžāϰ āĻšāĻŋāϏ⧇āĻŦ⧇ āĻ˜ā§‹āώāĻŖāĻž āĻ•āϰ⧇āύāĨ¤
āφāĻĒāύāĻŋ āϏ⧇āϟāĻŋ āφāϧ⧁āύāĻŋāĻ• āĻĒāĻžāχāĻĨāύ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•āϰ⧇āύāĨ¤
āφāĻĒāύāĻžāϕ⧇ āύāϤ⧁āύ āĻ•āϰ⧇ āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āϕ⧋āύ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋāϰ āĻŦāĻžāĻ•ā§āϝ āĻ—āĻ āύ, āĻĢāĻžāĻ‚āĻļāύ āĻŦāĻž āĻ•ā§āϞāĻžāϏ āĻ•āĻŋāϛ⧁āχ āĻļāĻŋāĻ–āϤ⧇ āĻšāĻšā§āϛ⧇ āύāĻžāĨ¤
āĻļ⧁āϧ⧁āχ āφāϧ⧁āύāĻŋāĻ• **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 ...
```
...āĻāĻŦāĻ‚ āĻĻ⧇āϖ⧁āύ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āφāĻĒāύāĻžāϰ āĻāĻĄāĻŋāϟāϰ āωāĻĒāĻžāĻĻāĻžāύāϗ⧁āϞ⧋āϕ⧇ āϏ⧟āĻ‚āĻ•ā§āϰāĻŋ⧟āĻ­āĻžāĻŦ⧇-āϏāĻŽā§āĻĒāĻ¨ā§āύ āĻ•āϰāĻŦ⧇ āĻāĻŦāĻ‚ āϤāĻžāĻĻ⧇āϰ āϧāϰāύ āϜāĻžāύāϤ⧇ āĻĒāĻžāϰāĻŦ⧇:
![editor support](https://fastapi.tiangolo.com/img/vscode-completion.png)
āφāϰāĻ“ āĻŦ⧈āĻļāĻŋāĻˇā§āĻŸā§āϝ āϏāĻŽā§āĻĒāĻ¨ā§āύ āωāĻĻāĻžāĻšāϰāϪ⧇āϰ āϜāĻ¨ā§āϝ, āĻĻ⧇āϖ⧁āύ <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 āϞāĻžāχāϏ⧇āĻ¨ā§āϏ āύ⧀āϤāĻŋāĻŽāĻžāϞāĻžāϰ āĻ…āϧ⧀āύ⧇ āĻļāĻ°ā§āϤāĻžā§ŸāĻŋāϤāĨ¤

1
docs/bn/mkdocs.yml

@ -0,0 +1 @@
INHERIT: ../en/mkdocs.yml
Loadingâ€Ļ
Cancel
Save