|
| 1 | +# ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ |
| 2 | + |
| 3 | +๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์ ์ผ๋ถ๊ฐ ์๋ ๋ค๋ฅธ ํจ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ๋, "์ฟผ๋ฆฌ" ๋งค๊ฐ๋ณ์๋ก ์๋ ํด์ํฉ๋๋ค. |
| 4 | + |
| 5 | +```Python hl_lines="9" |
| 6 | +{!../../../docs_src/query_params/tutorial001.py!} |
| 7 | +``` |
| 8 | + |
| 9 | +์ฟผ๋ฆฌ๋ URL์์ `?` ํ์ ๋์ค๊ณ `&`์ผ๋ก ๊ตฌ๋ถ๋๋ ํค-๊ฐ ์์ ์งํฉ์
๋๋ค. |
| 10 | + |
| 11 | +์๋ฅผ ๋ค์ด, URL์์: |
| 12 | + |
| 13 | +``` |
| 14 | +http://127.0.0.1:8000/items/?skip=0&limit=10 |
| 15 | +``` |
| 16 | + |
| 17 | +...์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋: |
| 18 | + |
| 19 | +* `skip`: ๊ฐ `0`์ ๊ฐ์ง๋๋ค. |
| 20 | +* `limit`: ๊ฐ `10`์ ๊ฐ์ง๋๋ค. |
| 21 | + |
| 22 | +URL์ ์ผ๋ถ์ด๋ฏ๋ก "์์ฐ์ค๋ฝ๊ฒ" ๋ฌธ์์ด์
๋๋ค. |
| 23 | + |
| 24 | +ํ์ง๋ง ํ์ด์ฌ ํ์
๊ณผ ํจ๊ป ์ ์ธํ ๊ฒฝ์ฐ(์ ์์์ `int`), ํด๋น ํ์
์ผ๋ก ๋ณํ๋๊ณ ์ด์ ๋ํด ๊ฒ์ฆํฉ๋๋ค. |
| 25 | + |
| 26 | +๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์ ์ ์ฉ๋ ๋์ผํ ํ๋ก์ธ์ค๊ฐ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์๋ ์ ์ฉ๋ฉ๋๋ค: |
| 27 | + |
| 28 | +* (๋น์ฐํ) ํธ์ง๊ธฐ ์ง์ |
| 29 | +* ๋ฐ์ดํฐ <abbr title="HTTP ์์ฒญ์์ ์ ๋ฌ๋๋ ๋ฌธ์์ด์ ํ์ด์ฌ ๋ฐ์ดํฐ๋ก ๋ณํ">"ํ์ฑ"</abbr> |
| 30 | +* ๋ฐ์ดํฐ ๊ฒ์ฆ |
| 31 | +* ์๋ ๋ฌธ์ํ |
| 32 | + |
| 33 | +## ๊ธฐ๋ณธ๊ฐ |
| 34 | + |
| 35 | +์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ ๊ฒฝ๋ก์์ ๊ณ ์ ๋ ๋ถ๋ถ์ด ์๋๊ธฐ ๋๋ฌธ์ ์ ํ์ ์ผ ์ ์๊ณ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ์ง ์ ์์ต๋๋ค. |
| 36 | + |
| 37 | +์ ์์์ `skip=0`๊ณผ `limit=10`์ ๊ธฐ๋ณธ๊ฐ์ ๊ฐ๊ณ ์์ต๋๋ค. |
| 38 | + |
| 39 | +๊ทธ๋ฌ๋ฏ๋ก URL๋ก ์ด๋ํ๋ฉด: |
| 40 | + |
| 41 | +``` |
| 42 | +http://127.0.0.1:8000/items/ |
| 43 | +``` |
| 44 | + |
| 45 | +์๋๋ก ์ด๋ํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค: |
| 46 | + |
| 47 | +``` |
| 48 | +http://127.0.0.1:8000/items/?skip=0&limit=10 |
| 49 | +``` |
| 50 | + |
| 51 | +ํ์ง๋ง ๊ฐ๋ น ์๋๋ก ์ด๋ํ ๊ฒฝ์ฐ: |
| 52 | + |
| 53 | +``` |
| 54 | +http://127.0.0.1:8000/items/?skip=20 |
| 55 | +``` |
| 56 | + |
| 57 | +ํจ์์ ๋งค๊ฐ๋ณ์ ๊ฐ์ ์๋๊ฐ ๋ฉ๋๋ค: |
| 58 | + |
| 59 | +* `skip=20`: URL์์ ์ง์ ํ๊ธฐ ๋๋ฌธ์
๋๋ค |
| 60 | +* `limit=10`: ๊ธฐ๋ณธ๊ฐ์ด๊ธฐ ๋๋ฌธ์
๋๋ค |
| 61 | + |
| 62 | +## ์ ํ์ ๋งค๊ฐ๋ณ์ |
| 63 | + |
| 64 | +๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ธฐ๋ณธ๊ฐ์ `None`์ผ๋ก ์ค์ ํ์ฌ ์ ํ์ ๋งค๊ฐ๋ณ์๋ฅผ ์ ์ธํ ์ ์์ต๋๋ค: |
| 65 | + |
| 66 | +```Python hl_lines="9" |
| 67 | +{!../../../docs_src/query_params/tutorial002.py!} |
| 68 | +``` |
| 69 | + |
| 70 | +์ด ๊ฒฝ์ฐ ํจ์ ๋งค๊ฐ๋ณ์ `q`๋ ์ ํ์ ์ด๋ฉฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก `None` ๊ฐ์ด ๋ฉ๋๋ค. |
| 71 | + |
| 72 | +!!! check "ํ์ธ" |
| 73 | + **FastAPI**๋ `item_id`๊ฐ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์ด๊ณ `q`๋ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์๊ฐ ์๋ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ผ๋ ๊ฒ์ ์ ์ ๋๋ก ์ถฉ๋ถํ ๋๋ํฉ๋๋ค. |
| 74 | + |
| 75 | +!!! note "์ฐธ๊ณ " |
| 76 | + FastAPI๋ `q`๊ฐ `= None`์ด๋ฏ๋ก ์ ํ์ ์ด๋ผ๋ ๊ฒ์ ์ธ์งํฉ๋๋ค. |
| 77 | + |
| 78 | + `Optional[str]`์ ์๋ `Optional`์ FastAPI(FastAPI๋ `str` ๋ถ๋ถ๋ง ์ฌ์ฉํฉ๋๋ค)๊ฐ ์ฌ์ฉํ๋๊ฒ ์๋์ง๋ง, `Optional[str]`์ ํธ์ง๊ธฐ์๊ฒ ์ฝ๋์์ ์ค๋ฅ๋ฅผ ์ฐพ์๋ผ ์ ์๊ฒ ๋์์ค๋๋ค. |
| 79 | + |
| 80 | +## ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ ํ๋ณํ |
| 81 | + |
| 82 | +`bool` ํ์ผ๋ก ์ ์ธํ ์๋ ์๊ณ , ์๋์ฒ๋ผ ๋ณํ๋ฉ๋๋ค: |
| 83 | + |
| 84 | +```Python hl_lines="9" |
| 85 | +{!../../../docs_src/query_params/tutorial003.py!} |
| 86 | +``` |
| 87 | + |
| 88 | +์ด ๊ฒฝ์ฐ, ์๋๋ก ์ด๋ํ๋ฉด: |
| 89 | + |
| 90 | +``` |
| 91 | +http://127.0.0.1:8000/items/foo?short=1 |
| 92 | +``` |
| 93 | + |
| 94 | +๋๋ |
| 95 | + |
| 96 | +``` |
| 97 | +http://127.0.0.1:8000/items/foo?short=True |
| 98 | +``` |
| 99 | + |
| 100 | +๋๋ |
| 101 | + |
| 102 | +``` |
| 103 | +http://127.0.0.1:8000/items/foo?short=true |
| 104 | +``` |
| 105 | + |
| 106 | +๋๋ |
| 107 | + |
| 108 | +``` |
| 109 | +http://127.0.0.1:8000/items/foo?short=on |
| 110 | +``` |
| 111 | + |
| 112 | +๋๋ |
| 113 | + |
| 114 | +``` |
| 115 | +http://127.0.0.1:8000/items/foo?short=yes |
| 116 | +``` |
| 117 | + |
| 118 | +๋๋ ๋ค๋ฅธ ์ด๋ค ๋ณํ(๋๋ฌธ์, ์ฒซ๊ธ์๋ง ๋๋ฌธ์ ๋ฑ)์ด๋๋ผ๋ ํจ์๋ ๋งค๊ฐ๋ณ์ `bool`ํ์ ๊ฐ์ง `short`์ ๊ฐ์ด `True`์์ ์๋๋ค. ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ `False`์
๋๋ค. |
| 119 | + |
| 120 | + |
| 121 | +## ์ฌ๋ฌ ๊ฒฝ๋ก/์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ |
| 122 | + |
| 123 | +์ฌ๋ฌ ๊ฒฝ๋ก ๋งค๊ฐ๋ณ์์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ๋์์ ์ ์ธํ ์ ์์ผ๋ฉฐ **FastAPI**๋ ์ด๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์๊ณ ์์ต๋๋ค. |
| 124 | + |
| 125 | +๊ทธ๋ฆฌ๊ณ ํน์ ์์๋ก ์ ์ธํ ํ์๊ฐ ์์ต๋๋ค. |
| 126 | + |
| 127 | +๋งค๊ฐ๋ณ์๋ค์ ์ด๋ฆ์ผ๋ก ๊ฐ์ง๋ฉ๋๋ค: |
| 128 | + |
| 129 | +```Python hl_lines="8 10" |
| 130 | +{!../../../docs_src/query_params/tutorial004.py!} |
| 131 | +``` |
| 132 | + |
| 133 | +## ํ์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ |
| 134 | + |
| 135 | +๊ฒฝ๋ก๊ฐ ์๋ ๋งค๊ฐ๋ณ์์ ๋ํ ๊ธฐ๋ณธ๊ฐ์ ์ ์ธํ ๋(์ง๊ธ์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ง ๋ณด์์ต๋๋ค), ํด๋น ๋งค๊ฐ๋ณ์๋ ํ์์ (Required)์ด์ง ์์์ต๋๋ค. |
| 136 | + |
| 137 | +ํน์ ๊ฐ์ ์ถ๊ฐํ์ง ์๊ณ ์ ํ์ ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์ ๊ธฐ๋ณธ๊ฐ์ `None`์ผ๋ก ์ค์ ํ๋ฉด ๋ฉ๋๋ค. |
| 138 | + |
| 139 | +๊ทธ๋ฌ๋ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๋ฅผ ํ์๋ก ๋ง๋ค๋ ค๋ฉด ๊ธฐ๋ณธ๊ฐ์ ์ ์ธํ ์ ์์ต๋๋ค: |
| 140 | + |
| 141 | +```Python hl_lines="6-7" |
| 142 | +{!../../../docs_src/query_params/tutorial005.py!} |
| 143 | +``` |
| 144 | + |
| 145 | +์ฌ๊ธฐ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์ `needy`๋ `str`ํ์ธ ํ์ ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์์
๋๋ค. |
| 146 | + |
| 147 | +๋ธ๋ผ์ฐ์ ์์ URL์ ์๋์ฒ๋ผ ์ฐ๋ค๋ฉด: |
| 148 | + |
| 149 | +``` |
| 150 | +http://127.0.0.1:8000/items/foo-item |
| 151 | +``` |
| 152 | + |
| 153 | +...ํ์ ๋งค๊ฐ๋ณ์ `needy`๋ฅผ ๋ฃ์ง ์์๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ ์ค๋ฅ๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค: |
| 154 | + |
| 155 | +```JSON |
| 156 | +{ |
| 157 | + "detail": [ |
| 158 | + { |
159 | + "loc": [ |
| 160 | + "query", |
| 161 | + "needy" |
| 162 | + ], |
| 163 | + "msg": "field required", |
| 164 | + "type": "value_error.missing" |
| 165 | + } |
| 166 | + ] |
| 167 | +} |
| 168 | +``` |
| 169 | + |
| 170 | +`needy`๋ ํ์ ๋งค๊ฐ๋ณ์์ด๋ฏ๋ก URL์ ๋ฐ๋์ ์ค์ ํด์ค์ผ ํฉ๋๋ค: |
| 171 | + |
| 172 | +``` |
| 173 | +http://127.0.0.1:8000/items/foo-item?needy=sooooneedy |
| 174 | +``` |
| 175 | + |
| 176 | +...์๋์ฒ๋ผ ์๋ํฉ๋๋ค: |
| 177 | + |
| 178 | +```JSON |
| 179 | +{ |
| 180 | + "item_id": "foo-item", |
| 181 | + "needy": "sooooneedy" |
| 182 | +} |
| 183 | +``` |
| 184 | + |
| 185 | +๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ก , ์ผ๋ถ ๋งค๊ฐ๋ณ์๋ ํ์๋ก, ๋ค๋ฅธ ์ผ๋ถ๋ ๊ธฐ๋ณธ๊ฐ์, ๋ ๋ค๋ฅธ ์ผ๋ถ๋ ์ ํ์ ์ผ๋ก ์ ์ธํ ์ ์์ต๋๋ค: |
| 186 | + |
| 187 | +```Python hl_lines="10" |
| 188 | +{!../../../docs_src/query_params/tutorial006.py!} |
| 189 | +``` |
| 190 | + |
| 191 | +์ด ๊ฒฝ์ฐ 3๊ฐ์ง ์ฟผ๋ฆฌ ๋งค๊ฐ๋ณ์๊ฐ ์์ต๋๋ค: |
| 192 | + |
| 193 | +* `needy`, ํ์์ ์ธ `str`. |
| 194 | +* `skip`, ๊ธฐ๋ณธ๊ฐ์ด `0`์ธ `int`. |
| 195 | +* `limit`, ์ ํ์ ์ธ `int`. |
| 196 | + |
| 197 | +!!! tip "ํ" |
| 198 | + [๊ฒฝ๋ก ๋งค๊ฐ๋ณ์](path-params.md#predefined-values){.internal-link target=_blank}์ ๋ง์ฐฌ๊ฐ์ง๋ก `Enum`์ ์ฌ์ฉํ ์ ์์ต๋๋ค. |
0 commit comments