Welcome !
N.K Github
2
5์›”

[FastAPI] 16. Pulumi๋ฅผ ์ด์šฉํ•ด FastAPI Serverless ํ™˜๊ฒฝ ๊ตฌ์ถ•ํ•ด๋ณด๊ธฐ

์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ๊ธ€์—์„œ FastAPI, Magnum, AWS Serverless Stack(Lambda, API Gateway)์„ ์ด์šฉํ•˜์—ฌ FastAPI ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. 2022.05.22 - [Programming/Python] - [FastAPI] 15....

2
5์›”

[FastAPI] 15. FastAPI๋ฅผ Serverless๋กœ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ• - Mangum

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” FastAPI์™€ Serverless(์„œ๋ฒ„๋ฆฌ์Šค) ์กฐํ•ฉ์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ดˆ๊ธฐ ์„œ๋ฒ„๋ฆฌ์Šค๋ฅผ ๋ฐฐ์› ์„ ๋•Œ๋Š” AWS์˜ Lambda๋ผ๋Š” ์„œ๋น„์Šค๊ฐ€ ๋‚˜์™”์„ ๋•Œ์˜€๋Š”๋ฐ์š”. ๋‹น์‹œ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋ณ„๋„์˜ ํ”„๋ ˆ์ž„์›Œํฌ ํ•„์š”์—†์ด ํ•จ์ˆ˜์˜ ๊ตฌํ˜„๋งŒ์œผ๋กœ API ์„œ๋น„์Šค๋ฅผ ๋งŒ...

.
1์›”

[FastAPI] 13. SQLAlchemy์™€ Pydantic์„ ์ด์šฉํ•œ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ ๋งคํ•‘

SQLAlchemy๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๋ณด๋ฉด ์›ํ•˜์ง€ ์•Š์„ ๋•Œ API์—์„œ ๋ชจ๋“  ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ ์ตœ์ ํ™” ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์šธ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค API์—์„œ๋Š” ํŠน์ • ์ปฌ๋Ÿผ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ ํ˜น์€ ๊ด€๊ณ„ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ทธ๋ ‡์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๊นŒ์ง€ ๋ชจ๋‘ ๋‚˜์˜ค๊ฒŒ ๋˜์–ด ์˜คํžˆ๋ ค AP...

.
1์›”

[FastAPI] 12. Pytest / UnitTest๋ฅผ ์ด์šฉํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” Pytest์™€ Unit Test๋ฅผ ์ด์šฉํ•˜์—ฌ FastAPI์—์„œ ์ž‘์„ฑํ•œ API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Pytest Python ์–ธ์–ด์—์„œ ์ง€์›ํ•˜๋Š” ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์—๋Š” Pytest๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Pytest๋Š” Python์—์„œ ๊ฐ„๋‹จํ•œ ...

2
9์›”

[FastAPI] 11. Dependency Injector๋ฅผ ์ด์šฉํ•œ ์˜์กด์„ฑ ๊ด€๋ฆฌ

์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ฒŒ ๋˜์–ด ์ด๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์ƒ๊ธฐ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์— ์ ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€ํ‘œ์ ์ธ ์•„ํ‚คํ…์ฒ˜์ธ Layered Architecture๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. Layered Architecture๋Š” ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์šด์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜...

2
5์›”

[FastAPI] 10. Middleware๋ฅผ ์ด์šฉํ•œ ์ „ํ›„ ์ฒ˜๋ฆฌ

API๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ์–ด๋А ์ •๋„ ์†Œ๋ชจ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค๊ฑฐ๋‚˜ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์•˜์„ ๋•Œ ๋ฐ›์€ EndPoint์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ถ๊ธˆํ•˜๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ์š”? Middleware Spring์—์„œ๋Š” Intercepter, Filter์™€ ๊ฐ™์€ ์ค‘๊ฐ„ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค๋ฉด,...

4
4์›”

[FastAPI] 9. Persistence Layer ๊ตฌ๊ฐ„์„ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ํ•˜๋Š” ๋ฐฉ๋ฒ•

์ฒซ ํฌ์ŠคํŠธ์—์„œ ์šฐ๋ฆฌ๋Š” FastAPI๊ฐ€ ASGI ๊ธฐ๋ฐ˜์˜ uvicorn์„ ์ด์šฉํ•˜์—ฌ uvloop์— ๊ธฐ๋ฐ˜ํ•œ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋กœ API ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ๋น„๋™๊ธฐ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ด์•ผ๊ธฐ๋ฅผ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ณต๊ต๋กญ๊ฒŒ๋„ Database Connection์—์„œ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•ด์ฃผ์ง€ ์•Š...

1
3์›”

[FastAPI] 8. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์—์„œ SQLAlchemy์˜ scoped_session์ด ๋ฌธ์ œ๊ฐ€ ๋˜๋Š” ์ด์œ 

์•„๋ž˜์˜ ํฌ์ŠคํŠธ์—์„œ FastAPI๊ฐ€ SQLAlchemy์™€ ์—ฐ๋™ํ•˜์˜€์„ ๋•Œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ฏธํกํ•˜๋‹ค๋Š” ๋‹จ์ ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ–ˆ์—ˆ๋˜ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 2020.12.27 - [Programming/Python] - [FastAPI] 2. SQLAlchemy๋ฅผ ์ด์šฉํ•œ ๊ฐ„...

2
2์›”

[FastAPI] 7. Google-auth ๋ฐ PyJWT๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 2

์ง€๋‚œ ๊ธ€์— ์ด์–ด์„œ ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” OAuth2 ์ธ์ฆ ํ† ํฐ์„ API์—์„œ ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. HTTP Header ์šฐ๋ฆฌ๊ฐ€ REST API๋ฅผ ํ†ต์‹ ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” HTTP ํ”„๋กœํ† ์ฝœ์€ Header์™€ Body๋ผ๋Š” ๊ตฌ์กฐ๋กœ ์ด๋ค„์ ธ ์žˆ์Šต๋‹ˆ๋‹ค. Head...

1
2์›”

[FastAPI] 6. Google-auth ๋ฐ PyJWT๋ฅผ ์ด์šฉํ•œ OAuth2 ์ธ์ฆ ๊ตฌํ˜„ 1

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ธ์ฆ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. Spring์—์„œ๋Š” Spring Security๋ผ๋Š” ๋ชจ๋“ˆ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ธ์ฆ์— ๋Œ€ํ•œ ๊ตฌํ˜„์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ ๋„ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•˜์—ฌ Google ๊ฐœ๋ฐœ์ž ์ฝ˜์†”์—์„œ Clien...

3
1์›”

[FastAPI] 5. pyyaml์„ ์ด์šฉํ•œ FastAPI ํ™˜๊ฒฝ ๋‚˜๋ˆ„๊ธฐ

FastAPI๋กœ ๊ธฐ๋ณธ์ ์ธ API์™€ ๋ฌธ์„œ๋ฅผ ๋งŒ๋“œ๋Š” ์ž‘์—… ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—ฐ๋™ํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ํ•ด๋ดค๋‹ค๋ฉด ์ด์ œ๋Š” ๋ณธ๊ฒฉ์ ์ธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐฐํฌ๋ฅผ ์œ„ํ•ด ํ™˜๊ฒฝ์„ ๋‚˜๋ˆ„์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ™˜๊ฒฝ์ด๋ผ๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ผ๊นŒ์š”? ๊ฐœ๋ฐœ ํ™˜๊ฒฝ? ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์ด๋ผ๋ฉด ์šฐ๋ฆฌ๋Š” PyCharm์„ ์‚ฌ์šฉํ•˜๊ณ  Pyt...

.
1์›”

[FastAPI] 3. SQLAlchemy + Graphene ์กฐํ•ฉ์œผ๋กœ GraphQL ์„œ๋ฒ„ ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” GraphQL์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. What is GraphQL ? GraphQL์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋Š” ๊ทธ๋ฆฌ ๊ธธ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์„œ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‹ค๋ค„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. GraphQL์€ Facebook์—์„œ ๊ฐœ๋ฐœํ•œ ๋ฐ์ดํ„ฐ ํ‘œํ˜„ ์–ธ์–ด๋กœ ์—ฌ๊ธฐ์„œ QL...

.
1์›”

[FastAPI] 2. SQLAlchemy๋ฅผ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ CRUD API ๋งŒ๋“ค๊ธฐ

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ORM์— ๋Œ€ํ•œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ORM์€ Object Relation Mapping์˜ ์•ฝ์ž๋กœ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค Entity์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ DB์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„๋ฅผ ์ด์šฉ...

.
1์›”

[FastAPI] 1. GET, POST, PUT, DELETE ๋“ฑ ๊ธฐ๋ณธ API ๋งŒ๋“ค๊ณ  ๋ฌธ์„œ ์ž๋™ํ™” ํ•ด๋ณด๊ธฐ

์ง€๋‚œ ๊ธ€์— ์ด์–ด์„œ FastAPI๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ๋ณธ์ ์ธ REST API ๊ฐœ๋ฐœ ์ด์•ผ๊ธฐ ๋‘ ๋ฒˆ์งธ๋ฅผ ์ด์–ด๊ฐ€๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ REST API๋ฅผ ๊ฐœ๋ฐœํ•˜๋ฉด ์ฃผ์š” ๋ฉ”์†Œ๋“œ ์ข…๋ฅ˜ 5๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ๋ฐ”๋กœ GET, POST, PUT, DELETE, PATCH ์ด๋ ‡๊ฒŒ 5๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค....

.
1์›”

[Python] FastAPI ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ REST API ๊ฐœ๋ฐœ

Python ์–ธ์–ด๋ฅผ ์ด์šฉํ•˜์—ฌ REST API ์„œ๋ฒ„๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตญ๋‚ด ํ˜น์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์˜ ์‚ฌ๋ž‘์„ ๋ฐ›๊ณ  ์žˆ๋Š” Django, ๊ทธ๋ฆฌ๊ณ  ๊ฐ€๋ฒผ์šด ํ”„๋ ˆ์ž„์›Œํฌ๋กœ์จ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋Š” Flask ๋“ฑ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ๋Š”๋ฐ์š”. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” Jetbrain...