--- /dev/null
+# μ¬μ©μ μ μ μλ΅ - HTML, Stream, νμΌ, κΈ°ν
+
+κΈ°λ³Έμ μΌλ‘, **FastAPI** μλ΅μ `JSONResponse`λ₯Ό μ¬μ©νμ¬ λ°νν©λλ€.
+
+μ΄λ₯Ό μ¬μ μ νλ €λ©΄ [μλ΅μ μ§μ λ°ννκΈ°](response-directly.md){.internal-link target=_blank}μμ λ³Έ κ²μ²λΌ `Response`λ₯Ό μ§μ λ°ννλ©΄ λ©λλ€.
+
+κ·Έλ¬λ `Response` (λλ `JSONResponse`μ κ°μ νμ ν΄λμ€)λ₯Ό μ§μ λ°ννλ©΄, λ°μ΄ν°κ° μλμΌλ‘ λ³νλμ§ μμΌλ©° (μ¬μ§μ΄ `response_model`μ μ μΈνλλΌλ), λ¬Έμνκ° μλμΌλ‘ μμ±λμ§ μμ΅λλ€(μλ₯Ό λ€μ΄, μμ±λ OpenAPIμ μΌλΆλ‘ HTTP ν€λ `Content-Type`μ νΉμ "λ―Έλμ΄ νμ
"μ ν¬ν¨νλ κ²½μ°).
+
+νμ§λ§ *κ²½λ‘ μμ
λ°μ½λ μ΄ν°*μμ `response_class` λ§€κ°λ³μλ₯Ό μ¬μ©νμ¬ μνλ `Response`(μ: λͺ¨λ `Response` νμ ν΄λμ€)λ₯Ό μ μΈν μλ μμ΅λλ€.
+
+*κ²½λ‘ μμ
ν¨μ*μμ λ°ννλ λ΄μ©μ ν΄λΉ `Response`μμ ν¬ν¨λ©λλ€.
+
+κ·Έλ¦¬κ³ λ§μ½ κ·Έ `Response`κ° `JSONResponse`μ `UJSONResponse`μ κ²½μ° μ²λΌ JSON λ―Έλμ΄ νμ
(`application/json`)μ κ°μ§κ³ μλ€λ©΄, *κ²½λ‘ μμ
λ°μ½λ μ΄ν°*μμ μ μΈν Pydanticμ `response_model`μ μ¬μ©ν΄ μλμΌλ‘ λ³ν(λ° νν°λ§) λ©λλ€.
+
+/// note | μ°Έκ³
+
+λ―Έλμ΄ νμ
μ΄ μλ μλ΅ ν΄λμ€λ₯Ό μ¬μ©νλ κ²½μ°, FastAPIλ μλ΅μ λ΄μ©μ΄ μμ κ²μΌλ‘ μμνλ―λ‘ μμ±λ OpenAPI λ¬Έμμμ μλ΅ νμμ λ¬Έμννμ§ μμ΅λλ€.
+
+///
+
+## `ORJSONResponse` μ¬μ©νκΈ°
+
+μλ₯Ό λ€μ΄, μ±λ₯μ κ·Ήλννλ €λ κ²½μ°, <a href="https://github.com/ijl/orjson" class="external-link" target="_blank">orjson</a>μ μ€μΉνμ¬ μ¬μ©νκ³ μλ΅μ `ORJSONResponse`λ‘ μ€μ ν μ μμ΅λλ€.
+
+μ¬μ©νκ³ μ νλ `Response` ν΄λμ€(νμ ν΄λμ€)λ₯Ό μν¬νΈν ν, **κ²½λ‘ μμ
λ°μ½λ μ΄ν°*μμ μ μΈνμΈμ.
+
+λκ·λͺ¨ μλ΅μ κ²½μ°, λμ
λ리λ₯Ό λ°ννλ κ²λ³΄λ€ `Response`λ₯Ό λ°ννλ κ²μ΄ ν¨μ¬ λΉ λ¦
λλ€.
+
+μ΄μ λ κΈ°λ³Έμ μΌλ‘, FastAPIκ° λ΄λΆμ λͺ¨λ νλͺ©μ κ²μ¬νκ³ JSONμΌλ‘ μ§λ ¬νν μ μλμ§ νμΈνκΈ° λλ¬Έμ
λλ€. μ΄λ μ¬μ©μ μλ΄μμμ μ€λͺ
λ [JSON νΈν κ°λ₯ μΈμ½λ](../tutorial/encoder.md){.internal-link target=_blank}λ₯Ό μ¬μ©νλ λ°©μκ³Ό λμΌν©λλ€. μ΄λ₯Ό ν΅ν΄ λ°μ΄ν°λ² μ΄μ€ λͺ¨λΈκ³Ό κ°μ **μμμ κ°μ²΄**λ₯Ό λ°νν μ μμ΅λλ€.
+
+νμ§λ§ λ°ννλ λ΄μ©μ΄ **JSONμΌλ‘ μ§λ ¬ν κ°λ₯**νλ€κ³ νμ νλ κ²½μ°, ν΄λΉ λ΄μ©μ μλ΅ ν΄λμ€μ μ§μ μ λ¬ν μ μμΌλ©°, FastAPIκ° λ°ν λ΄μ©μ `jsonable_encoder`λ₯Ό ν΅ν΄ μ²λ¦¬ν λ€ μλ΅ ν΄λμ€μ μ λ¬νλ μ€λ²ν€λλ₯Ό νΌν μ μμ΅λλ€.
+
+{* ../../docs_src/custom_response/tutorial001b.py hl[2,7] *}
+
+/// info | μ 보
+
+`response_class` λ§€κ°λ³μλ μλ΅μ "λ―Έλμ΄ νμ
"μ μ μνλ λ°μλ μ¬μ©λ©λλ€.
+
+μ΄ κ²½μ°, HTTP ν€λ `Content-Type`μ `application/json`μΌλ‘ μ€μ λ©λλ€.
+
+κ·Έλ¦¬κ³ μ΄λ OpenAPIμ κ·Έλλ‘ λ¬Έμνλ©λλ€.
+
+///
+
+/// tip | ν
+
+`ORJSONResponse`λ FastAPIμμλ§ μ¬μ©ν μ μκ³ Starletteμμλ μ¬μ©ν μ μμ΅λλ€.
+
+///
+
+## HTML μλ΅
+
+**FastAPI**μμ HTML μλ΅μ μ§μ λ°ννλ €λ©΄ `HTMLResponse`λ₯Ό μ¬μ©νμΈμ.
+
+* `HTMLResponse`λ₯Ό μν¬νΈ ν©λλ€.
+* *κ²½λ‘ μμ
λ°μ½λ μ΄ν°*μ `response_class` λ§€κ°λ³μλ‘ `HTMLResponse`λ₯Ό μ λ¬ν©λλ€.
+
+{* ../../docs_src/custom_response/tutorial002.py hl[2,7] *}
+
+/// info | μ 보
+
+`response_class` λ§€κ°λ³μλ μλ΅μ "λ―Έλμ΄ νμ
"μ μ μνλ λ°μλ μ¬μ©λ©λλ€.
+
+μ΄ κ²½μ°, HTTP ν€λ `Content-Type`μ `text/html`λ‘ μ€μ λ©λλ€.
+
+κ·Έλ¦¬κ³ μ΄λ OpenAPIμ κ·Έλλ‘ λ¬Έμν λ©λλ€.
+
+///
+
+### `Response` λ°ννκΈ°
+
+[μλ΅μ μ§μ λ°ννκΈ°](response-directly.md){.internal-link target=_blank}μμ λ³Έ κ² μ²λΌ, *κ²½λ‘ μμ
*μμ μλ΅μ μ§μ λ°ννμ¬ μ¬μ μν μλ μμ΅λλ€.
+
+μμ μμ μ λμΌνκ² `HTMLResponse`λ₯Ό λ°ννλ μ½λλ λ€μκ³Ό κ°μ μ μμ΅λλ€:
+
+{* ../../docs_src/custom_response/tutorial003.py hl[2,7,19] *}
+
+/// warning | κ²½κ³
+
+*κ²½λ‘ μμ
ν¨μ*μμ μ§μ λ°νλ `Response`λ OpenAPIμ λ¬Έμνλμ§ μμ΅λλ€(μλ₯Όλ€μ΄, `Content-Type`μ΄ λ¬Έμνλμ§ μμ) μλ λνν λ¬Έμμμλ νμλμ§ μμ΅λλ€.
+
+///
+
+/// info | μ 보
+
+λ¬Όλ‘ μ€μ `Content-Type` ν€λ, μν μ½λ λ±μ λ°νλ `Response` κ°μ²΄μμ κ°μ Έμ΅λλ€.
+
+///
+
+### OpenAPIμ λ¬Έμννκ³ `Response` μ¬μ μ νκΈ°
+
+ν¨μ λ΄λΆμμ μλ΅μ μ¬μ μνλ©΄μ λμμ OpenAPIμμ "λ―Έλμ΄ νμ
"μ λ¬Έμννκ³ μΆλ€λ©΄, `response_class` λ§€κ²λ³μλ₯Ό μ¬μ©νλ©΄μ `Response` κ°μ²΄λ₯Ό λ°νν μ μμ΅λλ€.
+
+μ΄ κ²½μ° `response_class`λ OpenAPI *κ²½λ‘ μμ
*μ λ¬Έμννλ λ°λ§ μ¬μ©λκ³ , μ€μ λ‘λ μ¬λ¬λΆμ΄ λ°νν `Response`κ° κ·Έλλ‘ μ¬μ©λ©λλ€.
+
+### `HTMLResponse`μ§μ λ°ννκΈ°
+
+μλ₯Ό λ€μ΄, λ€μκ³Ό κ°μ΄ μμ±ν μ μμ΅λλ€:
+
+{* ../../docs_src/custom_response/tutorial004.py hl[7,21,23] *}
+
+μ΄ μμ μμ, `generate_html_response()` ν¨μλ HTMLμ `str`λ‘ λ°ννλ λμ μ΄λ―Έ `Response`λ₯Ό μμ±νκ³ λ°νν©λλ€.
+
+`generate_html_response()`λ₯Ό νΈμΆν κ²°κ³Όλ₯Ό λ°νν¨μΌλ‘μ¨, κΈ°λ³Έμ μΈ **FastAPI** κΈ°λ³Έ λμμ μ¬μ μ νλ `Response`λ₯Ό μ΄λ―Έ λ°ννκ³ μμ΅λλ€.
+
+νμ§λ§ `response_class`μ `HTMLResponse`λ₯Ό ν¨κ» μ λ¬νκΈ° λλ¬Έμ, FastAPIλ μ΄λ₯Ό OpenAPI λ° λνν λ¬Έμμμ `text/html`λ‘ HTMLμ λ¬Έμν νλ λ°©λ²μ μ μ μμ΅λλ€.
+
+<img src="/img/tutorial/custom-response/image01.png">
+
+## μ¬μ© κ°λ₯ν μλ΅λ€
+
+λ€μμ μ¬μ©ν μ μλ λͺκ°μ§ μλ΅λ€ μ
λλ€.
+
+`Response`λ₯Ό μ¬μ©νμ¬ λ€λ₯Έ μ΄λ€ κ²λ λ°ν ν μ μμΌλ©°, μ§μ νμ ν΄λμ€λ₯Ό λ§λ€ μλ μμ΅λλ€.
+
+/// note | κΈ°μ μΈλΆμ¬ν
+
+`from starlette.responses import HTMLResponse`λ₯Ό μ¬μ©ν μλ μμ΅λλ€.
+
+**FastAPI**λ κ°λ°μμΈ μ¬λ¬λΆμ νΈμλ₯Ό μν΄ `starlette.responses`λ₯Ό `fastapi.responses`λ‘ μ 곡 νμ§λ§, λλΆλΆμ μ¬μ© κ°λ₯ν μλ΅μ Starletteμμ μ§μ κ°μ Έμ΅λλ€.
+
+///
+
+### `Response`
+
+κΈ°λ³Έ `Response` ν΄λμ€λ λ€λ₯Έ λͺ¨λ μλ΅ ν΄λμ€μ λΆλͺ¨ ν΄λμ€ μ
λλ€.
+
+μ΄ ν΄λμ€λ₯Ό μ§μ λ°νν μ μμ΅λλ€.
+
+λ€μ λ§€κ°λ³μλ₯Ό λ°μ μ μμ΅λλ€:
+
+* `content` - `str` λλ `bytes`.
+* `status_code` - HTTP μνμ½λλ₯Ό λνλ΄λ `int`.
+* `headers` - λ¬Έμμ΄λ‘ μ΄λ£¨μ΄μ§ `dict`.
+* `media_type` - λ―Έλμ΄ νμ
μ λνλ΄λ `str` μ: `"text/html"`.
+
+FastAPI (μ€μ λ‘λ Starlette)κ° μλμΌλ‘ `Content-Length` ν€λλ₯Ό ν¬ν¨μν΅λλ€. λν `media_type`μ κΈ°λ°νμ¬ `Content-Type` ν€λλ₯Ό ν¬ν¨νλ©°, ν
μ€νΈ νμ
μ κ²½μ° λ¬Έμ μ§ν©μ μΆκ° ν©λλ€.
+
+{* ../../docs_src/response_directly/tutorial002.py hl[1,18] *}
+
+### `HTMLResponse`
+
+ν
μ€νΈ λλ λ°μ΄νΈλ₯Ό λ°μ HTML μλ΅μ λ°νν©λλ€. μμμ μ€λͺ
ν λ΄μ©κ³Ό κ°μ΅λλ€.
+
+### `PlainTextResponse`
+
+ν
μ€νΈ λλ λ°μ΄νΈλ₯Ό λ°μ μΌλ° ν
μ€νΈ μλ΅μ λ°νν©λλ€.
+
+{* ../../docs_src/custom_response/tutorial005.py hl[2,7,9] *}
+
+### `JSONResponse`
+
+λ°μ΄ν°λ₯Ό λ°μ `application/json`μΌλ‘ μΈμ½λ©λ μλ΅μ λ°νν©λλ€.
+
+μ΄λ μμμ μ€λͺ
νλ―μ΄ **FastAPI**μμ κΈ°λ³Έμ μΌλ‘ μ¬μ©λλ μλ΅ νμμ
λλ€.
+
+### `ORJSONResponse`
+
+ <a href="https://github.com/ijl/orjson" class="external-link" target="_blank">`orjson`</a>μ μ¬μ©νμ¬ λΉ λ₯Έ JSON μλ΅μ μ 곡νλ λμμ
λλ€. μμμ μ€λͺ
ν λ΄μ©κ³Ό κ°μ΅λλ€.
+
+/// info | μ 보
+
+μ΄λ₯Ό μ¬μ©νλ €λ©΄ `orjson`μ μ€μΉν΄μΌν©λλ€. μ: `pip install orjson`.
+
+///
+
+### `UJSONResponse`
+
+<a href="https://github.com/ultrajson/ultrajson" class="external-link" target="_blank">`ujson`</a>μ μ¬μ©ν λ λ€λ₯Έ JSON μλ΅ νμμ
λλ€.
+
+/// info | μ 보
+
+μ΄ μλ΅μ μ¬μ©νλ €λ©΄ `ujson`μ μ€μΉν΄μΌν©λλ€. μ: 'pip install ujson`.
+
+///
+
+/// warning | κ²½κ³
+
+`ujson` μ μΌλΆ μμΈ κ²½μ°λ₯Ό μ²λ¦¬νλ λ° μμ΄ Python λ΄μ₯ ꡬνλ³΄λ€ λ μ격ν©λλ€.
+
+///
+
+{* ../../docs_src/custom_response/tutorial001.py hl[2,7] *}
+
+/// tip | ν
+
+`ORJSONResponse`κ° λ λΉ λ₯Έ λμμΌ κ°λ₯μ±μ΄ μμ΅λλ€.
+
+///
+
+### `RedirectResponse`
+
+HTTP 리λλ μ
μλ΅μ λ°νν©λλ€. κΈ°λ³Έμ μΌλ‘ μν μ½λλ 307(μμ 리λλ μ
)μΌλ‘ μ€μ λ©λλ€.
+
+`RedirectResponse`λ₯Ό μ§μ λ°νν μ μμ΅λλ€.
+
+{* ../../docs_src/custom_response/tutorial006.py hl[2,9] *}
+
+---
+
+λλ `response_class` λ§€κ°λ³μμμ μ¬μ©ν μλ μμ΅λλ€:
+
+
+{* ../../docs_src/custom_response/tutorial006b.py hl[2,7,9] *}
+
+μ΄ κ²½μ°, *κ²½λ‘ μμ
* ν¨μμμ URLμ μ§μ λ°νν μ μμ΅λλ€.
+
+μ΄ κ²½μ°, μ¬μ©λλ `status_code`λ `RedirectResponse`μ κΈ°λ³Έκ°μΈ `307` μ
λλ€.
+
+---
+
+`status_code` λ§€κ°λ³μλ₯Ό `response_class` λ§€κ°λ³μμ ν¨κ» μ¬μ©ν μλ μμ΅λλ€:
+
+{* ../../docs_src/custom_response/tutorial006c.py hl[2,7,9] *}
+
+### `StreamingResponse`
+
+λΉλκΈ° μ λλ μ΄ν° λλ μΌλ° μ λλ μ΄ν°/μ΄ν°λ μ΄ν°λ₯Ό λ°μ μλ΅ λ³Έλ¬Έμ μ€νΈλ¦¬λ° ν©λλ€.
+
+{* ../../docs_src/custom_response/tutorial007.py hl[2,14] *}
+
+#### νμΌκ³Ό κ°μ κ°μ²΄λ₯Ό μ¬μ©ν `StreamingResponse`
+
+νμΌκ³Ό κ°μ κ°μ²΄(μ: `open()`μΌλ‘ λ°νλ κ°μ²΄)κ° μλ κ²½μ°, ν΄λΉ νμΌκ³Ό κ°μ κ°μ²΄λ₯Ό λ°λ³΅(iterate)νλ μ λλ μ΄ν° ν¨μλ₯Ό λ§λ€ μ μμ΅λλ€.
+
+μ΄ λ°©μμΌλ‘, νμΌ μ 체λ₯Ό λ©λͺ¨λ¦¬μ λ¨Όμ μ½μ΄λ€μΌ νμ μμ΄, μ λλ μ΄ν° ν¨μλ₯Ό `StreamingResponse`μ μ λ¬νμ¬ λ°νν μ μμ΅λλ€.
+
+μ΄ λ°©μμ ν΄λΌμ°λ μ€ν 리μ§, λΉλμ€ μ²λ¦¬ λ±μ λ€μν λΌμ΄λΈλ¬λ¦¬μ ν¨κ» μ¬μ©ν μ μμ΅λλ€.
+
+{* ../../docs_src/custom_response/tutorial008.py hl[2,10:12,14] *}
+
+1. μ΄κ²μ΄ μ λλ μ΄ν° ν¨μμ
λλ€. `yield` λ¬Έμ ν¬ν¨νκ³ μμΌλ―λ‘ "μ λλ μ΄ν° ν¨μ"μ
λλ€.
+2. `with` λΈλ‘μ μ¬μ©ν¨μΌλ‘μ¨, μ λλ μ΄ν° ν¨μκ° μλ£λ ν νμΌκ³Ό κ°μ κ°μ²΄κ° λ«νλλ‘ ν©λλ€. μ¦, μλ΅ μ μ‘μ΄ λλ ν λ«νλλ€.
+3. μ΄ `yield from`μ ν¨μκ° `file_like`λΌλ κ°μ²΄λ₯Ό λ°λ³΅(iterate)νλλ‘ ν©λλ€. λ°λ³΅λ κ° λΆλΆμ μ΄ μ λλ μ΄ν° ν¨μ(`iterfile`)μμ μμ±λ κ²μ²λΌ `yield` λ©λλ€.
+
+ μ΄λ κ² νλ©΄ "μμ±(generating)" μμ
μ λ΄λΆμ μΌλ‘ λ€λ₯Έ 무μΈκ°μ μμνλ μ λλ μ΄ν° ν¨μκ° λ©λλ€.
+
+ μ΄ λ°©μμ μ¬μ©νλ©΄ `with` λΈλ‘ μμμ νμΌμ μ΄ μ μμ΄, μμ
μ΄ μλ£λ ν νμΌκ³Ό κ°μ κ°μ²΄κ° λ«νλ κ²μ 보μ₯ν μ μμ΅λλ€.
+
+/// tip | ν
+
+μ¬κΈ°μ νμ€ `open()`μ μ¬μ©νκ³ μκΈ° λλ¬Έμ `async`μ `await`λ₯Ό μ§μνμ§ μμ΅λλ€. λ°λΌμ κ²½λ‘ μμ
μ μΌλ° `def`λ‘ μ μΈν©λλ€.
+
+///
+
+### `FileResponse`
+
+νμΌμ λΉλκΈ°λ‘ μ€νΈλ¦¬λ°νμ¬ μλ΅ν©λλ€.
+
+λ€λ₯Έ μλ΅ μ νκ³Όλ λ€λ₯Έ μΈμλ₯Ό μ¬μ©νμ¬ κ°μ²΄λ₯Ό μμ±ν©λλ€:
+
+* `path` - μ€νΈλ¦¬λ°ν νμΌμ κ²½λ‘.
+* `headers` - λμ
λ리 νμμ μ¬μ©μ μ μ ν€λ.
+* `media_type` - λ―Έλμ΄ νμ
μ λνλ΄λ λ¬Έμμ΄. μ€μ λμ§ μμ κ²½μ° νμΌ μ΄λ¦μ΄λ κ²½λ‘λ₯Ό μ¬μ©νμ¬ μΆλ‘ ν©λλ€.
+* `filename` - μ€μ λ κ²½μ° μλ΅μ `Content-Disposition`μ ν¬ν¨λ©λλ€.
+
+νμΌ μλ΅μλ μ μ ν `Content-Length`, `Last-Modified`, λ° `ETag` ν€λκ° ν¬ν¨λ©λλ€.
+
+{* ../../docs_src/custom_response/tutorial009.py hl[2,10] *}
+
+λν `response_class` λ§€κ°λ³μλ₯Ό μ¬μ©ν μλ μμ΅λλ€:
+
+{* ../../docs_src/custom_response/tutorial009b.py hl[2,8,10] *}
+
+μ΄ κ²½μ°, κ²½λ‘ μμ
ν¨μμμ νμΌ κ²½λ‘λ₯Ό μ§μ λ°νν μ μμ΅λλ€.
+
+## μ¬μ©μ μ μ μλ΅ ν΄λμ€
+
+`Response`λ₯Ό μμλ°μ μ¬μ©μ μ μ μλ΅ ν΄λμ€λ₯Ό μμ±νκ³ μ¬μ©ν μ μμ΅λλ€.
+
+μλ₯Ό λ€μ΄, ν¬ν¨λ `ORJSONResponse` ν΄λμ€μμ μ¬μ©λμ§ μλ μ€μ μΌλ‘ <a href="https://github.com/ijl/orjson" class="external-link" target="_blank">orjson</a>μ μ¬μ©νκ³ μΆλ€κ³ κ°μ ν΄λ΄
μλ€.
+
+λ§μ½ λ€μ¬μ°κΈ° λ° ν¬λ§·λ JSONμ λ°ννκ³ μΆλ€λ©΄, `orjson.OPT_INDENT_2` μ΅μ
μ μ¬μ©ν μ μμ΅λλ€.
+
+`CustomORJSONResponse`λ₯Ό μμ±ν μ μμ΅λλ€. μ¬κΈ°μ ν΅μ¬μ `Response.render(content)` λ©μλλ₯Ό μμ±νμ¬ λ΄μ©μ `bytes`λ‘ λ°ννλ κ²μ
λλ€:
+
+{* ../../docs_src/custom_response/tutorial009c.py hl[9:14,17] *}
+
+μ΄μ λ€μ λμ :
+
+```json
+{"message": "Hello World"}
+```
+
+μ΄ μλ΅μ μ΄λ κ² λ°νλ©λλ€:
+
+```json
+{
+ "message": "Hello World"
+}
+```
+
+λ¬Όλ‘ JSON ν¬λ§·ν
λ³΄λ€ λ μ μ©νκ² νμ©ν λ°©λ²μ μ°Ύμ μ μμ κ²μ
λλ€. π
+
+## κΈ°λ³Έ μλ΅ ν΄λμ€
+
+**FastAPI** ν΄λμ€ κ°μ²΄ λλ `APIRouter`λ₯Ό μμ±ν λ κΈ°λ³Έμ μΌλ‘ μ¬μ©ν μλ΅ ν΄λμ€λ₯Ό μ§μ ν μ μμ΅λλ€.
+
+μ΄λ₯Ό μ μνλ λ§€κ°λ³μλ `default_response_class`μ
λλ€.
+
+μλ μμ μμ **FastAPI**λ λͺ¨λ κ²½λ‘ μμ
μμ κΈ°λ³Έμ μΌλ‘ `JSONResponse` λμ `ORJSONResponse`λ₯Ό μ¬μ©ν©λλ€.
+
+{* ../../docs_src/custom_response/tutorial010.py hl[2,4] *}
+
+/// tip | ν
+
+μ¬μ ν μ΄μ μ²λΌ *κ²½λ‘ μμ
*μμ `response_class`λ₯Ό μ¬μ μν μ μμ΅λλ€.
+
+///
+
+## μΆκ° λ¬Έμν
+
+OpenAPIμμ `responses`λ₯Ό μ¬μ©νμ¬ λ―Έλμ΄ νμ
λ° κΈ°ν μΈλΆ μ 보λ₯Ό μ μΈν μλ μμ΅λλ€: [OpenAPIμμ μΆκ° μλ΅](additional-responses.md){.internal-link target=_blank}.