mirror of https://github.com/tiangolo/fastapi.git
163 lines
5.2 KiB
Markdown
163 lines
5.2 KiB
Markdown
# 📨 💪
|
||
|
||
🕐❔ 👆 💪 📨 📊 ⚪️➡️ 👩💻 (➡️ 💬, 🖥) 👆 🛠️, 👆 📨 ⚫️ **📨 💪**.
|
||
|
||
**📨** 💪 📊 📨 👩💻 👆 🛠️. **📨** 💪 💽 👆 🛠️ 📨 👩💻.
|
||
|
||
👆 🛠️ 🌖 🕧 ✔️ 📨 **📨** 💪. ✋️ 👩💻 🚫 🎯 💪 📨 **📨** 💪 🌐 🕰.
|
||
|
||
📣 **📨** 💪, 👆 ⚙️ <a href="https://docs.pydantic.dev/" class="external-link" target="_blank">Pydantic</a> 🏷 ⏮️ 🌐 👫 🏋️ & 💰.
|
||
|
||
/// info
|
||
|
||
📨 💽, 👆 🔜 ⚙️ 1️⃣: `POST` (🌅 ⚠), `PUT`, `DELETE` ⚖️ `PATCH`.
|
||
|
||
📨 💪 ⏮️ `GET` 📨 ✔️ ⚠ 🎭 🔧, 👐, ⚫️ 🐕🦺 FastAPI, 🕴 📶 🏗/😕 ⚙️ 💼.
|
||
|
||
⚫️ 🚫, 🎓 🩺 ⏮️ 🦁 🎚 🏆 🚫 🎦 🧾 💪 🕐❔ ⚙️ `GET`, & 🗳 🖕 💪 🚫 🐕🦺 ⚫️.
|
||
|
||
///
|
||
|
||
## 🗄 Pydantic `BaseModel`
|
||
|
||
🥇, 👆 💪 🗄 `BaseModel` ⚪️➡️ `pydantic`:
|
||
|
||
{* ../../docs_src/body/tutorial001.py hl[4] *}
|
||
|
||
## ✍ 👆 💽 🏷
|
||
|
||
⤴️ 👆 📣 👆 💽 🏷 🎓 👈 😖 ⚪️➡️ `BaseModel`.
|
||
|
||
⚙️ 🐩 🐍 🆎 🌐 🔢:
|
||
|
||
{* ../../docs_src/body/tutorial001.py hl[7:11] *}
|
||
|
||
🎏 🕐❔ 📣 🔢 🔢, 🕐❔ 🏷 🔢 ✔️ 🔢 💲, ⚫️ 🚫 ✔. ⏪, ⚫️ ✔. ⚙️ `None` ⚒ ⚫️ 📦.
|
||
|
||
🖼, 👉 🏷 🔛 📣 🎻 "`object`" (⚖️ 🐍 `dict`) 💖:
|
||
|
||
```JSON
|
||
{
|
||
"name": "Foo",
|
||
"description": "An optional description",
|
||
"price": 45.2,
|
||
"tax": 3.5
|
||
}
|
||
```
|
||
|
||
... `description` & `tax` 📦 (⏮️ 🔢 💲 `None`), 👉 🎻 "`object`" 🔜 ☑:
|
||
|
||
```JSON
|
||
{
|
||
"name": "Foo",
|
||
"price": 45.2
|
||
}
|
||
```
|
||
|
||
## 📣 ⚫️ 🔢
|
||
|
||
🚮 ⚫️ 👆 *➡ 🛠️*, 📣 ⚫️ 🎏 🌌 👆 📣 ➡ & 🔢 🔢:
|
||
|
||
{* ../../docs_src/body/tutorial001.py hl[18] *}
|
||
|
||
...& 📣 🚮 🆎 🏷 👆 ✍, `Item`.
|
||
|
||
## 🏁
|
||
|
||
⏮️ 👈 🐍 🆎 📄, **FastAPI** 🔜:
|
||
|
||
* ✍ 💪 📨 🎻.
|
||
* 🗜 🔗 🆎 (🚥 💪).
|
||
* ✔ 💽.
|
||
* 🚥 💽 ❌, ⚫️ 🔜 📨 👌 & 🆑 ❌, ☠️ ⚫️❔ 🌐❔ & ⚫️❔ ❌ 📊.
|
||
* 🤝 👆 📨 📊 🔢 `item`.
|
||
* 👆 📣 ⚫️ 🔢 🆎 `Item`, 👆 🔜 ✔️ 🌐 👨🎨 🐕🦺 (🛠️, ♒️) 🌐 🔢 & 👫 🆎.
|
||
* 🏗 <a href="https://json-schema.org" class="external-link" target="_blank">🎻 🔗</a> 🔑 👆 🏷, 👆 💪 ⚙️ 👫 🙆 🙆 👆 💖 🚥 ⚫️ ⚒ 🔑 👆 🏗.
|
||
* 👈 🔗 🔜 🍕 🏗 🗄 🔗, & ⚙️ 🏧 🧾 <abbr title="User Interfaces">⚜</abbr>.
|
||
|
||
## 🏧 🩺
|
||
|
||
🎻 🔗 👆 🏷 🔜 🍕 👆 🗄 🏗 🔗, & 🔜 🎦 🎓 🛠️ 🩺:
|
||
|
||
<img src="/img/tutorial/body/image01.png">
|
||
|
||
& 🔜 ⚙️ 🛠️ 🩺 🔘 🔠 *➡ 🛠️* 👈 💪 👫:
|
||
|
||
<img src="/img/tutorial/body/image02.png">
|
||
|
||
## 👨🎨 🐕🦺
|
||
|
||
👆 👨🎨, 🔘 👆 🔢 👆 🔜 🤚 🆎 🔑 & 🛠️ 🌐 (👉 🚫🔜 🔨 🚥 👆 📨 `dict` ↩️ Pydantic 🏷):
|
||
|
||
<img src="/img/tutorial/body/image03.png">
|
||
|
||
👆 🤚 ❌ ✅ ❌ 🆎 🛠️:
|
||
|
||
<img src="/img/tutorial/body/image04.png">
|
||
|
||
👉 🚫 🤞, 🎂 🛠️ 🏗 🤭 👈 🔧.
|
||
|
||
& ⚫️ 🙇 💯 🔧 🌓, ⏭ 🙆 🛠️, 🚚 ⚫️ 🔜 👷 ⏮️ 🌐 👨🎨.
|
||
|
||
📤 🔀 Pydantic ⚫️ 🐕🦺 👉.
|
||
|
||
⏮️ 🖼 ✊ ⏮️ <a href="https://code.visualstudio.com" class="external-link" target="_blank">🎙 🎙 📟</a>.
|
||
|
||
✋️ 👆 🔜 🤚 🎏 👨🎨 🐕🦺 ⏮️ <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">🗒</a> & 🌅 🎏 🐍 👨🎨:
|
||
|
||
<img src="/img/tutorial/body/image05.png">
|
||
|
||
/// tip
|
||
|
||
🚥 👆 ⚙️ <a href="https://www.jetbrains.com/pycharm/" class="external-link" target="_blank">🗒</a> 👆 👨🎨, 👆 💪 ⚙️ <a href="https://github.com/koxudaxi/pydantic-pycharm-plugin/" class="external-link" target="_blank">Pydantic 🗒 📁</a>.
|
||
|
||
⚫️ 📉 👨🎨 🐕🦺 Pydantic 🏷, ⏮️:
|
||
|
||
* 🚘-🛠️
|
||
* 🆎 ✅
|
||
* 🛠️
|
||
* 🔎
|
||
* 🔬
|
||
|
||
///
|
||
|
||
## ⚙️ 🏷
|
||
|
||
🔘 🔢, 👆 💪 🔐 🌐 🔢 🏷 🎚 🔗:
|
||
|
||
{* ../../docs_src/body/tutorial002.py hl[21] *}
|
||
|
||
## 📨 💪 ➕ ➡ 🔢
|
||
|
||
👆 💪 📣 ➡ 🔢 & 📨 💪 🎏 🕰.
|
||
|
||
**FastAPI** 🔜 🤔 👈 🔢 🔢 👈 🏏 ➡ 🔢 🔜 **✊ ⚪️➡️ ➡**, & 👈 🔢 🔢 👈 📣 Pydantic 🏷 🔜 **✊ ⚪️➡️ 📨 💪**.
|
||
|
||
{* ../../docs_src/body/tutorial003.py hl[17:18] *}
|
||
|
||
## 📨 💪 ➕ ➡ ➕ 🔢 🔢
|
||
|
||
👆 💪 📣 **💪**, **➡** & **🔢** 🔢, 🌐 🎏 🕰.
|
||
|
||
**FastAPI** 🔜 🤔 🔠 👫 & ✊ 📊 ⚪️➡️ ☑ 🥉.
|
||
|
||
{* ../../docs_src/body/tutorial004.py hl[18] *}
|
||
|
||
🔢 🔢 🔜 🤔 ⏩:
|
||
|
||
* 🚥 🔢 📣 **➡**, ⚫️ 🔜 ⚙️ ➡ 🔢.
|
||
* 🚥 🔢 **⭐ 🆎** (💖 `int`, `float`, `str`, `bool`, ♒️) ⚫️ 🔜 🔬 **🔢** 🔢.
|
||
* 🚥 🔢 📣 🆎 **Pydantic 🏷**, ⚫️ 🔜 🔬 📨 **💪**.
|
||
|
||
/// note
|
||
|
||
FastAPI 🔜 💭 👈 💲 `q` 🚫 ✔ ↩️ 🔢 💲 `= None`.
|
||
|
||
`Union` `Union[str, None]` 🚫 ⚙️ FastAPI, ✋️ 🔜 ✔ 👆 👨🎨 🤝 👆 👍 🐕🦺 & 🔍 ❌.
|
||
|
||
///
|
||
|
||
## 🍵 Pydantic
|
||
|
||
🚥 👆 🚫 💚 ⚙️ Pydantic 🏷, 👆 💪 ⚙️ **💪** 🔢. 👀 🩺 [💪 - 💗 🔢: ⭐ 💲 💪](body-multiple-params.md#_2){.internal-link target=_blank}.
|