# ๐Ÿ’ช - ๐Ÿ” ๐Ÿท โฎ๏ธ **FastAPI**, ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ”ฌ, โœ”, ๐Ÿ“„, & โš™๏ธ ๐ŸŽฒ ๐Ÿ™‡ ๐Ÿฆ ๐Ÿท (๐Ÿ‘ Pydantic). ## ๐Ÿ“‡ ๐Ÿ‘ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ”ฌ ๐Ÿ”ข ๐Ÿพ. ๐Ÿ–ผ, ๐Ÿ `list`: {* ../../docs_src/body_nested_models/tutorial001.py hl[14] *} ๐Ÿ‘‰ ๐Ÿ”œ โš’ `tags` ๐Ÿ“‡, ๐Ÿ‘ โšซ๏ธ ๐Ÿšซ ๐Ÿ“ฃ ๐Ÿ†Ž ๐Ÿ”ฃ ๐Ÿ“‡. ## ๐Ÿ“‡ ๐Ÿ‘ โฎ๏ธ ๐Ÿ†Ž ๐Ÿ”ข โœ‹๏ธ ๐Ÿ โœ”๏ธ ๐ŸŽฏ ๐ŸŒŒ ๐Ÿ“ฃ ๐Ÿ“‡ โฎ๏ธ ๐Ÿ”— ๐Ÿ†Ž, โš–๏ธ "๐Ÿ†Ž ๐Ÿ”ข": ### ๐Ÿ—„ โŒจ `List` ๐Ÿ 3๏ธโƒฃ.9๏ธโƒฃ & ๐Ÿ”› ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐Ÿฉ `list` ๐Ÿ“ฃ ๐Ÿ‘ซ ๐Ÿ†Ž โœ ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿ‘€ ๐Ÿ”›. ๐Ÿ‘ถ โœ‹๏ธ ๐Ÿ โฌ โญ 3๏ธโƒฃ.9๏ธโƒฃ (3๏ธโƒฃ.6๏ธโƒฃ & ๐Ÿ”›), ๐Ÿ‘† ๐Ÿฅ‡ ๐Ÿ’ช ๐Ÿ—„ `List` โšช๏ธโžก๏ธ ๐Ÿฉ ๐Ÿ `typing` ๐Ÿ•น: {* ../../docs_src/body_nested_models/tutorial002.py hl[1] *} ### ๐Ÿ“ฃ `list` โฎ๏ธ ๐Ÿ†Ž ๐Ÿ”ข ๐Ÿ“ฃ ๐Ÿ†Ž ๐Ÿ‘ˆ โœ”๏ธ ๐Ÿ†Ž ๐Ÿ”ข (๐Ÿ”— ๐Ÿ†Ž), ๐Ÿ’– `list`, `dict`, `tuple`: * ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ โฌ ๐Ÿ”… ๐ŸŒ˜ 3๏ธโƒฃ.9๏ธโƒฃ, ๐Ÿ—„ ๐Ÿ‘ซ ๐ŸŒ“ โฌ โšช๏ธโžก๏ธ `typing` ๐Ÿ•น * ๐Ÿšถโ€โ™€๏ธ ๐Ÿ”— ๐Ÿ†Ž(โ“‚) "๐Ÿ†Ž ๐Ÿ”ข" โš™๏ธ โฌœ ๐Ÿ—œ: `[` & `]` ๐Ÿ 3๏ธโƒฃ.9๏ธโƒฃ โšซ๏ธ ๐Ÿ”œ: ```Python my_list: list[str] ``` โฌ ๐Ÿ โญ 3๏ธโƒฃ.9๏ธโƒฃ, โšซ๏ธ ๐Ÿ”œ: ```Python from typing import List my_list: List[str] ``` ๐Ÿ‘ˆ ๐ŸŒ ๐Ÿฉ ๐Ÿ โ• ๐Ÿ†Ž ๐Ÿ“„. โš™๏ธ ๐Ÿ‘ˆ ๐ŸŽ ๐Ÿฉ โ• ๐Ÿท ๐Ÿ”ข โฎ๏ธ ๐Ÿ”— ๐Ÿ†Ž. , ๐Ÿ‘† ๐Ÿ–ผ, ๐Ÿ‘ฅ ๐Ÿ’ช โš’ `tags` ๐ŸŽฏ "๐Ÿ“‡ ๐ŸŽป": {* ../../docs_src/body_nested_models/tutorial002.py hl[14] *} ## โš’ ๐Ÿ†Ž โœ‹๏ธ โคด๏ธ ๐Ÿ‘ฅ ๐Ÿ’ญ ๐Ÿ”ƒ โšซ๏ธ, & ๐Ÿค” ๐Ÿ‘ˆ ๐Ÿ”– ๐Ÿšซ๐Ÿ”œ ๐Ÿšซ ๐Ÿ”, ๐Ÿ‘ซ ๐Ÿ”œ ๐ŸŽฒ ๐Ÿ˜ ๐ŸŽป. & ๐Ÿ โœ”๏ธ ๐ŸŽ ๐Ÿ’ฝ ๐Ÿ†Ž โš’ ๐Ÿ˜ ๐Ÿฌ, `set`. โคด๏ธ ๐Ÿ‘ฅ ๐Ÿ’ช ๐Ÿ“ฃ `tags` โš’ ๐ŸŽป: {* ../../docs_src/body_nested_models/tutorial003.py hl[1,14] *} โฎ๏ธ ๐Ÿ‘‰, ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ“จ ๐Ÿ“จ โฎ๏ธ โŽ ๐Ÿ“Š, โšซ๏ธ ๐Ÿ”œ ๐Ÿ—œ โš’ ๐Ÿ˜ ๐Ÿฌ. & ๐Ÿ•โ” ๐Ÿ‘† ๐Ÿ”ข ๐Ÿ‘ˆ ๐Ÿ“Š, ๐Ÿšฅ โ„น โœ”๏ธ โŽ, โšซ๏ธ ๐Ÿ”œ ๐Ÿ”ข โš’ ๐Ÿ˜ ๐Ÿฌ. & โšซ๏ธ ๐Ÿ”œ โœ / ๐Ÿ“„ โžก๏ธ ๐Ÿ’โ€โ™‚๏ธ. ## ๐Ÿฆ ๐Ÿท ๐Ÿ”  ๐Ÿ”ข Pydantic ๐Ÿท โœ”๏ธ ๐Ÿ†Ž. โœ‹๏ธ ๐Ÿ‘ˆ ๐Ÿ†Ž ๐Ÿ’ช โšซ๏ธ โž•1๏ธโƒฃ Pydantic ๐Ÿท. , ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ“ฃ ๐Ÿ™‡ ๐Ÿฆ ๐ŸŽป "๐ŸŽš" โฎ๏ธ ๐ŸŽฏ ๐Ÿ”ข ๐Ÿ“›, ๐Ÿ†Ž & ๐Ÿ”ฌ. ๐ŸŒ ๐Ÿ‘ˆ, ๐ŸŽฒ ๐Ÿฆ. ### ๐Ÿ”ฌ ๐Ÿ“Š ๐Ÿ–ผ, ๐Ÿ‘ฅ ๐Ÿ’ช ๐Ÿ”ฌ `Image` ๐Ÿท: {* ../../docs_src/body_nested_models/tutorial004.py hl[9:11] *} ### โš™๏ธ ๐Ÿ“Š ๐Ÿ†Ž & โคด๏ธ ๐Ÿ‘ฅ ๐Ÿ’ช โš™๏ธ โšซ๏ธ ๐Ÿ†Ž ๐Ÿ”ข: {* ../../docs_src/body_nested_models/tutorial004.py hl[20] *} ๐Ÿ‘‰ ๐Ÿ”œ โ›“ ๐Ÿ‘ˆ **FastAPI** ๐Ÿ”œ โŒ› ๐Ÿ’ช ๐ŸŽ: ```JSON { "name": "Foo", "description": "The pretender", "price": 42.0, "tax": 3.2, "tags": ["rock", "metal", "bar"], "image": { "url": "http://example.com/baz.jpg", "name": "The Foo live" } } ``` ๐Ÿ”„, ๐Ÿคธ ๐Ÿ‘ˆ ๐Ÿ“„, โฎ๏ธ **FastAPI** ๐Ÿ‘† ๐Ÿคš: * ๐Ÿ‘จโ€๐ŸŽจ ๐Ÿ•โ€๐Ÿฆบ (๐Ÿ› ๏ธ, โ™’๏ธ), ๐Ÿฆ ๐Ÿท * ๐Ÿ’ฝ ๐Ÿ› ๏ธ * ๐Ÿ’ฝ ๐Ÿ”ฌ * ๐Ÿง ๐Ÿงพ ## ๐ŸŽ ๐Ÿ†Ž & ๐Ÿ”ฌ โ†–๏ธ โšช๏ธโžก๏ธ ๐Ÿ˜ โญ ๐Ÿ†Ž ๐Ÿ’– `str`, `int`, `float`, โ™’๏ธ. ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ ๐ŸŒ… ๐Ÿ— โญ ๐Ÿ†Ž ๐Ÿ‘ˆ ๐Ÿ˜– โšช๏ธโžก๏ธ `str`. ๐Ÿ‘€ ๐ŸŒ ๐ŸŽ› ๐Ÿ‘† โœ”๏ธ, ๐Ÿ›’ ๐Ÿฉบ Pydantic ๐Ÿ˜ ๐Ÿ†Ž. ๐Ÿ‘† ๐Ÿ”œ ๐Ÿ‘€ ๐Ÿ–ผ โญ ๐Ÿ“ƒ. ๐Ÿ–ผ, `Image` ๐Ÿท ๐Ÿ‘ฅ โœ”๏ธ `url` ๐Ÿ‘, ๐Ÿ‘ฅ ๐Ÿ’ช ๐Ÿ“ฃ โšซ๏ธ โ†ฉ๏ธ `str`, Pydantic `HttpUrl`: {* ../../docs_src/body_nested_models/tutorial005.py hl[4,10] *} ๐ŸŽป ๐Ÿ”œ โœ… โ˜‘ ๐Ÿ“›, & ๐Ÿ“„ ๐ŸŽป ๐Ÿ”— / ๐Ÿ—„ โœ…. ## ๐Ÿ”ข โฎ๏ธ ๐Ÿ“‡ ๐Ÿ“Š ๐Ÿ‘† ๐Ÿ’ช โš™๏ธ Pydantic ๐Ÿท ๐Ÿพ `list`, `set`, โ™’๏ธ: {* ../../docs_src/body_nested_models/tutorial006.py hl[20] *} ๐Ÿ‘‰ ๐Ÿ”œ โŒ› (๐Ÿ—œ, โœ”, ๐Ÿ“„, โ™’๏ธ) ๐ŸŽป ๐Ÿ’ช ๐Ÿ’–: ```JSON hl_lines="11" { "name": "Foo", "description": "The pretender", "price": 42.0, "tax": 3.2, "tags": [ "rock", "metal", "bar" ], "images": [ { "url": "http://example.com/baz.jpg", "name": "The Foo live" }, { "url": "http://example.com/dave.jpg", "name": "The Baz" } ] } ``` /// info ๐Ÿ‘€ โ” `images` ๐Ÿ”‘ ๐Ÿ”œ โœ”๏ธ ๐Ÿ“‡ ๐Ÿ–ผ ๐ŸŽš. /// ## ๐Ÿ™‡ ๐Ÿฆ ๐Ÿท ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ”ฌ ๐ŸŽฒ ๐Ÿ™‡ ๐Ÿฆ ๐Ÿท: {* ../../docs_src/body_nested_models/tutorial007.py hl[9,14,20,23,27] *} /// info ๐Ÿ‘€ โ” `Offer` โœ”๏ธ ๐Ÿ“‡ `Item`โ“‚, โ” ๐Ÿ”„ โœ”๏ธ ๐Ÿ“ฆ ๐Ÿ“‡ `Image`โ“‚ /// ## ๐Ÿ’ช ๐Ÿ˜ ๐Ÿ“‡ ๐Ÿšฅ ๐Ÿ” ๐ŸŽš ๐Ÿ’ฒ ๐ŸŽป ๐Ÿ’ช ๐Ÿ‘† โŒ› ๐ŸŽป `array` (๐Ÿ `list`), ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ“ฃ ๐Ÿ†Ž ๐Ÿ”ข ๐Ÿ”ข, ๐ŸŽ Pydantic ๐Ÿท: ```Python images: List[Image] ``` โš–๏ธ ๐Ÿ 3๏ธโƒฃ.9๏ธโƒฃ & ๐Ÿ”›: ```Python images: list[Image] ``` : {* ../../docs_src/body_nested_models/tutorial008.py hl[15] *} ## ๐Ÿ‘จโ€๐ŸŽจ ๐Ÿ•โ€๐Ÿฆบ ๐ŸŒ & ๐Ÿ‘† ๐Ÿคš ๐Ÿ‘จโ€๐ŸŽจ ๐Ÿ•โ€๐Ÿฆบ ๐ŸŒ. ๐Ÿฌ ๐Ÿ”˜ ๐Ÿ“‡: ๐Ÿ‘† ๐Ÿšซ ๐Ÿšซ ๐Ÿคš ๐Ÿ‘‰ ๐Ÿ˜‡ ๐Ÿ‘จโ€๐ŸŽจ ๐Ÿ•โ€๐Ÿฆบ ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ‘ท ๐Ÿ”— โฎ๏ธ `dict` โ†ฉ๏ธ Pydantic ๐Ÿท. โœ‹๏ธ ๐Ÿ‘† ๐Ÿšซ โœ”๏ธ ๐Ÿ˜Ÿ ๐Ÿ”ƒ ๐Ÿ‘ซ ๐Ÿ‘ฏโ€โ™‚๏ธ, ๐Ÿ“จ #๏ธโƒฃ ๐Ÿ—œ ๐Ÿ” & ๐Ÿ‘† ๐Ÿ”ข ๐Ÿ—œ ๐Ÿ” ๐ŸŽป ๐Ÿ’โ€โ™‚๏ธ. ## ๐Ÿ’ช โŒ `dict`โ“‚ ๐Ÿ‘† ๐Ÿ’ช ๐Ÿ“ฃ ๐Ÿ’ช `dict` โฎ๏ธ ๐Ÿ”‘ ๐Ÿ†Ž & ๐Ÿ’ฒ ๐ŸŽ ๐Ÿ†Ž. ๐Ÿต โœ”๏ธ ๐Ÿ’ญ โช โšซ๏ธโ” โ˜‘ ๐Ÿ‘/๐Ÿ”ข ๐Ÿ“› (๐Ÿ”œ ๐Ÿ’ผ โฎ๏ธ Pydantic ๐Ÿท). ๐Ÿ‘‰ ๐Ÿ”œ โš  ๐Ÿšฅ ๐Ÿ‘† ๐Ÿ’š ๐Ÿ“จ ๐Ÿ”‘ ๐Ÿ‘ˆ ๐Ÿ‘† ๐Ÿšซ โช ๐Ÿ’ญ. --- ๐ŸŽ โš  ๐Ÿ’ผ ๐Ÿ•โ” ๐Ÿ‘† ๐Ÿ’š โœ”๏ธ ๐Ÿ”‘ ๐ŸŽ ๐Ÿ†Ž, โœ… `int`. ๐Ÿ‘ˆ โšซ๏ธโ” ๐Ÿ‘ฅ ๐Ÿ”œ ๐Ÿ‘€ ๐Ÿ“ฅ. ๐Ÿ‘‰ ๐Ÿ’ผ, ๐Ÿ‘† ๐Ÿ”œ ๐Ÿšซ ๐Ÿ™† `dict` ๐Ÿ“ โšซ๏ธ โœ”๏ธ `int` ๐Ÿ”‘ โฎ๏ธ `float` ๐Ÿ’ฒ: {* ../../docs_src/body_nested_models/tutorial009.py hl[9] *} /// tip โœ”๏ธ ๐Ÿคฏ ๐Ÿ‘ˆ ๐ŸŽป ๐Ÿ•ด ๐Ÿ•โ€๐Ÿฆบ `str` ๐Ÿ”‘. โœ‹๏ธ Pydantic โœ”๏ธ ๐Ÿง ๐Ÿ’ฝ ๐Ÿ› ๏ธ. ๐Ÿ‘‰ โ›“ ๐Ÿ‘ˆ, โœ‹๏ธ ๐Ÿ‘† ๐Ÿ› ๏ธ ๐Ÿ‘ฉโ€๐Ÿ’ป ๐Ÿ’ช ๐Ÿ•ด ๐Ÿ“จ ๐ŸŽป ๐Ÿ”‘, ๐Ÿ“ ๐Ÿ‘ˆ ๐ŸŽป ๐Ÿ”Œ ๐Ÿ˜ ๐Ÿ”ข, Pydantic ๐Ÿ”œ ๐Ÿ—œ ๐Ÿ‘ซ & โœ” ๐Ÿ‘ซ. & `dict` ๐Ÿ‘† ๐Ÿ“จ `weights` ๐Ÿ”œ ๐Ÿค™ โœ”๏ธ `int` ๐Ÿ”‘ & `float` ๐Ÿ’ฒ. /// ## ๐ŸŒƒ โฎ๏ธ **FastAPI** ๐Ÿ‘† โœ”๏ธ ๐Ÿ”† ๐Ÿ’ช ๐Ÿšš Pydantic ๐Ÿท, โช ๐Ÿšง ๐Ÿ‘† ๐Ÿ“Ÿ ๐Ÿ™…, ๐Ÿ“ & ๐Ÿ˜. โœ‹๏ธ โฎ๏ธ ๐ŸŒ ๐Ÿ’ฐ: * ๐Ÿ‘จโ€๐ŸŽจ ๐Ÿ•โ€๐Ÿฆบ (๐Ÿ› ๏ธ ๐ŸŒ โ—) * ๐Ÿ’ฝ ๐Ÿ› ๏ธ (.โ“‚.. โœ / ๐Ÿ› ๏ธ) * ๐Ÿ’ฝ ๐Ÿ”ฌ * ๐Ÿ”— ๐Ÿงพ * ๐Ÿง ๐Ÿฉบ