Browse Source

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

Co-authored-by: SebastiÃĄn Ramírez <[email protected]>
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