committed by
GitHub
1 changed files with 61 additions and 0 deletions
@ -0,0 +1,61 @@ |
|||
# ์กฐ๊ฑด๋ถ์ ์ธ OpenAPI |
|||
|
|||
ํ์ํ ๊ฒฝ์ฐ, ์ค์ ๋ฐ ํ๊ฒฝ ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ ํ๊ฒฝ์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ๋ก OpenAPI๋ฅผ ๊ตฌ์ฑํ๊ณ ์์ ํ ๋นํ์ฑํํ ์๋ ์์ต๋๋ค. |
|||
|
|||
## ๋ณด์, API ๋ฐ docs์ ๋ํด์ |
|||
|
|||
ํ๋ก๋์
์์, ๋ฌธ์ํ๋ ์ฌ์ฉ์ ์ธํฐํ์ด์ค(UI)๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ด API๋ฅผ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ด *๋์ด์๋ ์ ๋ฉ๋๋ค*. |
|||
|
|||
์ด๋ API์ ์ถ๊ฐ์ ์ธ ๋ณด์์ ์ ๊ณตํ์ง ์์ผ๋ฉฐ, *๊ฒฝ๋ก ์์
*์ ์ฌ์ ํ ๋์ผํ ์์น์์ ์ฌ์ฉ ํ ์ ์์ต๋๋ค. |
|||
|
|||
์ฝ๋์ ๋ณด์ ๊ฒฐํจ์ด ์๋ค๋ฉด, ๊ทธ ๊ฒฐํจ์ ์ฌ์ ํ ์กด์ฌํ ๊ฒ์
๋๋ค. |
|||
|
|||
๋ฌธ์๋ฅผ ์จ๊ธฐ๋ ๊ฒ์ API์ ์ํธ์์ฉํ๋ ๋ฐฉ๋ฒ์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค๋ฉฐ, ํ๋ก๋์
์์ ๋๋ฒ๊น
์ ๋ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ ๋จ์ํ <a href="https://en.wikipedia.org/wiki/Security_through_obscurity" class="external-link" target="_blank">'๋ชจํธ์ฑ์ ์ํ ๋ณด์'</a>์ ํ ํํ๋ก ๊ฐ์ฃผ๋ ์ ์์ต๋๋ค. |
|||
|
|||
API๋ฅผ ๋ณดํธํ๊ณ ์ถ๋ค๋ฉด, ์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ ๋ ๋์ ๋ฐฉ๋ฒ๋ค์ด ์์ต๋๋ค: |
|||
|
|||
* ์์ฒญ ๋ณธ๋ฌธ๊ณผ ์๋ต์ ๋ํด ์ ์ ์๋ Pydantic ๋ชจ๋ธ์ ์ฌ์ฉํ๋๋ก ํ์ธ์. |
|||
|
|||
* ์ข
์์ฑ์ ์ฌ์ฉํ์ฌ ํ์ํ ๊ถํ๊ณผ ์ญํ ์ ๊ตฌ์ฑํ์ธ์. |
|||
|
|||
* ํ๋ฌธ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ์ ์ฅํ์ง ๋ง๊ณ , ์ค์ง ์ํธํ๋ ๋น๋ฐ๋ฒํธ๋ง ์ ์ฅํ์ธ์. |
|||
|
|||
* Passlib๊ณผ JWT ํ ํฐ๊ณผ ๊ฐ์ ์ ์๋ ค์ง ์ํธํ ๋๊ตฌ๋ค์ ๊ตฌํํ๊ณ ์ฌ์ฉํ์ธ์. |
|||
|
|||
* ํ์ํ ๊ณณ์ OAuth2 ๋ฒ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ธ๋ถํ๋ ๊ถํ ์ ์ด๋ฅผ ์ถ๊ฐํ์ธ์. |
|||
|
|||
* ๋ฑ๋ฑ.... |
|||
|
|||
๊ทธ๋ผ์๋ ๋ถ๊ตฌํ๊ณ , ํน์ ํ๊ฒฝ(์: ํ๋ก๋์
)์์ ๋๋ ํ๊ฒฝ ๋ณ์์ ์ค์ ์ ๋ฐ๋ผ API ๋ฌธ์๋ฅผ ๋นํ์ฑํํด์ผ ํ๋ ๋งค์ฐ ํน์ ํ ์ฌ์ฉ ์ฌ๋ก๊ฐ ์์ ์ ์์ต๋๋ค. |
|||
|
|||
## ์ค์ ๋ฐ ํ๊ฒฝ๋ณ์์ ์กฐ๊ฑด๋ถ OpenAPI |
|||
|
|||
๋์ผํ Pydantic ์ค์ ์ ์ฌ์ฉํ์ฌ ์์ฑ๋ OpenAPI ๋ฐ ๋ฌธ์ UI๋ฅผ ์ฝ๊ฒ ๊ตฌ์ฑํ ์ ์์ต๋๋ค. |
|||
|
|||
์๋ฅผ ๋ค์ด: |
|||
|
|||
{* ../../docs_src/conditional_openapi/tutorial001.py hl[6,11] *} |
|||
|
|||
์ฌ๊ธฐ์ `openapi_url` ์ค์ ์ ๊ธฐ๋ณธ๊ฐ์ธ `"/openapi.json"`์ผ๋ก ์ ์ธํฉ๋๋ค. |
|||
|
|||
๊ทธ๋ฐ ๋ค, ์ฐ๋ฆฌ๋ `FastAPI` ์ฑ์ ๋ง๋ค ๋ ๊ทธ๊ฒ์ ์ฌ์ฉํฉ๋๋ค. |
|||
|
|||
ํ๊ฒฝ ๋ณ์ `OPENAPI_URL`์ ๋น ๋ฌธ์์ด๋ก ์ค์ ํ์ฌ OpenAPI(๋ฌธ์ UI ํฌํจ)๋ฅผ ๋นํ์ฑํํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด: |
|||
|
|||
<div class="termy"> |
|||
|
|||
```console |
|||
$ OPENAPI_URL= uvicorn main:app |
|||
|
|||
<span style="color: green;">INFO</span>: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) |
|||
``` |
|||
|
|||
</div> |
|||
|
|||
๊ทธ๋ฆฌ๊ณ `/openapi.json`, `/docs` ๋๋ `/redoc`์ URL๋ก ์ด๋ํ๋ฉด `404 Not Found`๋ผ๋ ์ค๋ฅ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค: |
|||
|
|||
```JSON |
|||
{ |
|||
"detail": "Not Found" |
|||
} |
|||
``` |
Loadingโฆ
Reference in new issue