Flask๋ Python ์ผ๋ก ์์ฑ๋ ๋ง์ดํฌ๋ก ์น ํ๋ ์์ํฌ ์ค ํ๋์ ๋๋ค. ํ์ด์ฌ์ผ๋ก ์์ฑ๋ ๋ ๋ค๋ฅธ ํ ์คํ ์น ํ๋ ์์ํฌ์ธ Django ๊ฐ Django ORM, ๊ด๋ฆฌ์ ํ์ด์ง ๋ฑ์ ์์ฒด ์ ๊ณตํด์ฃผ๋ ๊ฒ๊ณผ๋ ๋ค๋ฆ ๋๋ค. ํ๋ผ์คํฌ ๊ณต์ ๋ฌธ์์์๋, โ๋ง์ดํฌ๋ก๋ ๋ฌด์์ธ๊ฐ?โ ์ ๋ํด์ ์๋์ ๊ฐ์ด ์ค๋ช ํ๊ณ ์์ต๋๋ค.
The โmicroโ in microframework means Flask aims to keep the core simple but extensible. ๋ง์ดํฌ๋กํ๋ ์์ํฌ์ "๋ง์ดํฌ๋ก"๋ Flask๊ฐ ํต์ฌ์ ๋จ์ํ์ง๋ง ํ์ฅ ๊ฐ๋ฅํ ์ํ๋ก ์ ์งํ๋ ๊ฒ์ ๋ชฉํ๋ก ํจ์ ์๋ฏธํฉ๋๋ค.
Django, FastAPI, Flask ๋ ํ์ด์ฌ์ผ๋ก ์์ฑ๋ ์น ํ๋ ์์ํฌ์ ์ผ๋์ฅ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ์์ต๋๋ค. ๋ฐฑ์๋ ์ธ์ด๋ก ํ์ด์ฌ์ ์ฌ์ฉํ๋ ๊ธฐ์ ์ด๋ผ๋ฉด, ์ด์ ์ ์ด๋ ์ํ์ ์์ ์ธ ํ๋ ์์ํฌ ์ค ํ๋๋ฅผ ์ฐ๊ณ ์์ ๊ฒ์ด๋ผ ์ฅ๋ดํฉ๋๋ค. ๋ณธ ํํ ๋ฆฌ์ผ์ ์งํํ๋ฉด์, ์น ๋ฐฑ์๋์ ๋ํ ์์ฃผ ๊ธฐ์ด์ ์ธ ๊ฐ๋ ์ ํ์ด๋ณผ ์ ์๋ ์ข์ ๊ธฐํ๊ฐ ๋๊ธธ ๋ฐ๋๋๋ค. ๐
Flask ๋ฅผ ๋ฐฑ์๋ ๊ธฐ์ ๋ก ์ฌ์ฉ ์ค์ธ ๊ธฐ์ ๋ค์ ์๊ฐํฉ๋๋ค.
์ด ์ธ์๋, 1000๊ฐ ์ด์์ ๊ธฐ์ ๋ค์ด Flask ๋ฅผ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
Flask์ ์ธ๊ณ์ ์ค์ ๊ฒ์ ํ์ํฉ๋๋ค. - Flask 0.11-dev documentation
Welcome to Flask - Flask Documentation (2.2.x)
https://github.com/pallets/flask
ํํ ๋ฆฌ์ผ์์ ์งํํ๋ ํ๋ก์ ํธ๋ฅผ ์๊ฐํฉ๋๋ค. ํํ ๋ฆฌ์ผ์ ์ฑ๊ณต์ ์ผ๋ก ๋ง๋ฌด๋ฆฌํ๋ฉด, ์๋์ ํ๋ก์ ํธ๋ค์ด ์์ฑ๋์ด ์์ ๊ฒ์ ๋๋ค.
ํํ ๋ฆฌ์ผ์ ํ๋ก์ ํธ๋ฅผ ์๋ฃํ๊ณ ๋์ ๋ง๋ฌด๋ฆฌํ๊ธฐ๋ณด๋จ, ์์ ์ด ์ถ๊ฐํ๊ณ ์ถ์๋ ๊ธฐ๋ฅ๋ค์ ์ถ๊ฐ๋ก ๊ตฌํํด๋ณด๋ฉฐ ๊ณต๋ถํ์๋ ๊ฒ์ ์ ๊ทน ์ถ์ฒ๋๋ฆฝ๋๋ค!
Flask ๋ก ํ์ ๊ด๋ฆฌ, ๊ฒ์๋ฌผ, ๊ด๋ฆฌ์ ํ์ด์ง, ๋๊ธ ์์ฑ, ์ปจํํธ ํผ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ์์ ๋ง์ ๋ธ๋ก๊ทธ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ง์ ์์ฑํด ๋ด ๋๋ค. ํ ์คํธ ์ฝ๋ ๋ํ ๋์ ํด ๋ณด๋ฉฐ, ์ฝ๋๋ก ์์ ์ด ์์ฑํ ์ฝ๋๋ฅผ ์ง์ ํ ์คํธํด ๋ด ๋๋ค. ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋ํด์๋ ์ดํดํด ๋ด ๋๋ค.
๊ฐ๋จํ๊ฒ ๋์ํ๋ REST API๋ฅผ ๊ตฌ์ถํด ๋ด์ผ๋ก์, HTTP Method์ JSON, WEB API์ ๋ํด ์ดํดํฉ๋๋ค. ํ๋ผ์คํฌ์์ ์ด๋ป๊ฒ JSON์ผ๋ก ์๋ต์ ์ฃผ๊ณ ๋ฐ๋์ง์ ๋ํด์ ์์๋ด ๋๋ค.
Flask-Restful ์ด๋ผ๋ ์ธ๋ถ ํจํค์ง๋ฅผ ์ด์ฉํด Create, Read, Update, Delete ๋ฅผ ์ํํ ์ ์๋ REST API๋ฅผ ๊ตฌ์ถํด ๋ด์ผ๋ก์จ, Flask์ Pluggable View ์ ๊ฐ๋ ์ ๋ํด ์ดํดํ๊ณ ํ์ฉํด ๋ด ๋๋ค.
ํ๋ผ์คํฌ๋ก ์ด๋ฏธ์ง ์ ๋ก๋, ํ์๊ฐ์ , ํ์ํํด, JWT๋ฅผ ํ์ฉํ ๋ก๊ทธ์ธ, ํ๋ก์ฐ/์ธํ๋ก์ฐ ๋ฑ์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ ์ธ์คํ๊ทธ๋จ์ Flask๋ก ๊ตฌํํด ๋ด ๋๋ค. ์์ ์ด ์์ฑํ API์ ๋ํ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํจ์ผ๋ก์, ์์ ์ ์ฝ๋๊ฐ ์ ์๋ํ๋์ง ์์๋ก ์ ํ ํ ์คํธ ์ผ์ด์ค์ ๋ํด ๊ฒ์ฆํด ๋ด ๋๋ค.
(2022.11.16 ํ์ฌ ์งํ์ค)
์๋์ ๊ณผ์ ๋ค์ ๋ฐ๋ผ๊ฐ๋ฉฐ, Flask ๋ฅผ ๊ณต๋ถํด ๋ณด์ธ์.
- ํด๋น ์ํผ์๋์์๋ ์๋์ฐ11 ํ๊ฒฝ์์ Flask ๊ฐ๋ฐ ํ๊ฒฝ์ ์ธํ ํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃน๋๋ค.
[OS - Windows] - "Windows11 ํ๊ฒฝ์์ FLask ๊ฐ๋ฐ ํ๊ฒฝ ์ค๋นํ๊ธฐ"
- ํด๋น ์ํผ์๋์์๋ Routing ์ ๋ํด์ ๋ค๋ฃน๋๋ค.
- ํด๋น ์ํผ์๋์์๋, ์ ์ ํ์ผ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃน๋๋ค.
- ๋๋ถ์ด, ์ด๋ฏธ ๋ง๋ค์ด์ง ํ ํ๋ฆฟ์ ์ํ๋ ์ ๋ณด๋ฅผ ์ด๋ป๊ฒ ๋ณด์ฌ์ฃผ๋์ง์ ๋ํด์๋ ๋ค๋ฃน๋๋ค.
- ํด๋น ์ํผ์๋์์๋ ๋ก๊ทธ์ธ๊ณผ ํ์๊ฐ์ ์ ๊ตฌํํฉ๋๋ค.
- ํ์๊ฐ์ ์ด๋ ๋ก๊ทธ์ธ ๋ฑ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ์ฌ์ฉ์๊ฐ ์กด์ฌํด์ผ ํ๊ณ , ์ฌ์ฉ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๊ฒ๋ค์ ์ผ์ผ์ด ์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ ค ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ ๋์ , ํ์ด์ฌ์ ํด๋์ค๋ก ๋ค๋ฃฐ ์ ์๋ ORM์ ๊ฐ๋ ์ ๋ํด ์ดํดํ๊ณ ํ์ฉํด ๋ด ๋๋ค.
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ flask-login ์ ์ด์ฉํด ๋ก๊ทธ์ธ์ ๊ตฌํํฉ๋๋ค.
- ๋ณดํต, ์ฌํ ๋ค๋ฅธ ์น ์๋น์ค์์๋ ๋ก๊ทธ์ธ์ ํ๋ฉด โ~~~๋ ํ์ํฉ๋๋ค.โ ์ ๊ฐ์ด ์ฌ์ฉ์๊ฐ ๋ณด๋ ํ์ด์ง์ ๋ด์ฉ์ด ๋ค๋ฅด๊ฒ ๋ณํํ๋ ๊ฒ์ ๋ณผ ์ ์์ฃ . ๋ก๊ทธ์ธ ์ฌ๋ถ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณด์ฌ์ง๋ ์น ํ์ด์ง๋ฅผ ๊ตฌํํฉ๋๋ค.
Flask ๋ก ๋๋ง์ ๋ธ๋ก๊ทธ ๊ฐ๋ฐํ๊ธฐ (3) - ๊ด๋ฆฌ์ ํ์ด์ง, ์นดํ ๊ณ ๋ฆฌ, ๊ฒ์๋ฌผ ์์คํ ๊ตฌํํ๊ธฐ
- ํด๋น ์ํผ์๋์์๋ ๊ด๋ฆฌ์ ํ์ด์ง๋ฅผ ๊ตฌํํฉ๋๋ค. ๊ด๋ฆฌ์ ํ์ด์ง๋ ์ผ๋ฐ ํ์์ด ๋ง๋๋ก ์ ๊ทผํ ์ ์์ผ๋ฉด ์ ๋๊ฒ ์ฃ . ์ด๋ฅผ ์ํด์ ์ฌ์ฉ์ ๋ชจ๋ธ์ ์์ ํ๊ณ , ํด๋น ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌ์์ธ์ง ์๋์ง์ ๋ฐ๋ผ ์ ๊ทผ ๊ถํ์ ์ ํํด์ผ ํฉ๋๋ค.
- ํ ์คํธ ์ฝ๋์ ๋ํด ์์๋ด ๋๋ค. ์ง๊ธ๊น์ง ์์ฑํ๋ ๊ธฐ๋ฅ๋ค์ ํ ์คํธ ์ฝ๋๋ฅผ ํตํด ๊ฒ์ฆํด ๋ณด๊ณ , ํ ์คํธ๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๊ทธ์ ๋ง์ถ ๊ธฐ๋ฅ์ ๊ฐ๋ฐํฉ๋๋ค. ์๋ฒฝํ ํํ๋ ์๋์ง๋ง, โTDD - ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐโ ์ ๊ฒฝํํด ๋ด ๋๋ค.
- ๊ฒ์๋ฌผ์ ๋ค๋ฃน๋๋ค. ์ญ์, ๊ฒ์๋ฌผ์ ๋ค๋ฃจ๊ธฐ ์ํด์ ๊ฒ์๋ฌผ ๋ชจ๋ธ์ ์์ฑํ๊ณ , ์ ์์ ๊ฒ์๋ฌผ๊ฐ์ ๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด์๋ ๋ค๋ฃน๋๋ค.
- ์นดํ ๊ณ ๋ฆฌ ์์คํ ์ ๋ค๋ฃน๋๋ค. ํ ์นดํ ๊ณ ๋ฆฌ์๋ ์ฌ๋ฌ ๊ฐ์ ๊ฒ์๋ฌผ์ด ํฌํจ๋ ์ ์์ฃ . ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํ ๋ชจ๋ธ์ ์์ฑํ๊ณ , ๋ธ๋ก๊ทธ์ ๋ํ๋ผ ์ ์์ต๋๋ค.
Flask ๋ก ๋๋ง์ ๋ธ๋ก๊ทธ ๊ฐ๋ฐํ๊ธฐ (4) - ๊ฒ์๋ฌผ ์ญ์ , ๋๊ธ, ์ปจํํธ ํผ ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
- ํด๋น ์ํผ์๋์์๋ ๊ฒ์๋ฌผ ์ญ์ , ๋๊ธ, ์ปจํํธ ํผ ๊ธฐ๋ฅ์ ๊ตฌํํฉ๋๋ค. ๊ฒ์๋ฌผ-์ ์ ์ ๊ด๊ณ์ ๋ง์ฐฌ๊ฐ์ง๋ก, Python ORM ์ผ๋ก ์ผ๋ ๋ค ๊ด๊ณ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ํด ๋ค๋ฃน๋๋ค.
- ๋ง์ฝ, ๊ฒ์๋ฌผ์ ์์ฑํ ์ ์ ๊ฐ ํํดํ๊ฑฐ๋, ๋๊ธ์ด ๋ฌ๋ฆฐ ๊ฒ์๋ฌผ์ด ์ญ์ ๋๋ค๋ฉด ๊ฒ์๋ฌผ์, ๊ทธ๋ฆฌ๊ณ ๋๊ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋์ด์ผ ํ ๊น์? ์์ ๋ฌธ์ ๋ค์ ORM ์ผ๋ก ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง์ ๋ํด ์์๋ด ๋๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๊ณณ์์๋ ํ ์คํธ ์ฝ๋๊ฐ ๋์ ๋ฉ๋๋ค. ๋ณธ์ธ์ด ์์ฑํ ์ฝ๋๊ฐ, ๋ณธ์ธ์ด ์์ฑํ ํ ์คํธ ์ผ์ด์ค์ ๋ํ์ฌ ๊ฒ์ฆ์ ํต๊ณผํ๋์ง ํ์ธํด ๋ณด๊ณ , ๋์ฑ ๋ ๋ค์ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํด ๋ด์ผ๋ก์ ๊ฒฌ๊ณ ํ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ์ฐ์ต์ ํ๊ธฐ ์ํ ์ด์์ ์ ๊ณตํฉ๋๋ค.
- ์์ flask ์์ json ์๋ต์ ์ด๋ป๊ฒ ์ฃผ๊ณ ๋ฐ๋์ง๋ฅผ ์์๋ด ๋๋ค.
- HTTP Method ์ ๋ํด ์์ฃผ ๊ฐ๋จํ๊ฒ ์์๋ด ๋๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฐ๋จํ REST API ๋ฅผ ๊ตฌํํฉ๋๋ค.
[REAL Python - Flask] - "Flask HTTP API(1) - ๊ฐ๋จํ HTTP API ๊ตฌ์ถํด๋ณด๊ธฐ"
- ์ง๊ธ๊น์ง ์ฌ์ฉํด์ค๋ ํจ์ํ ๋ทฐ๊ฐ ์๋ ํด๋์คํ ๋ทฐ, flask ์ Pluggable View ์ ๊ฐ๋ ์ ๋ํด ์ดํดํ๊ณ , ๊ทธ๊ฒ์ ์ ๊ทน ํ์ฉํ๋ flask-restful ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์ฉํด GET, POST, DELETE, PUT ๋ฉ์๋์ ๋์ํ๋, ์๋ฒฝํ๊ฒ ์๋ํ๋ ๊ฐ๋จํ REST API๋ฅผ ๊ตฌ์ถํด ๋ด ๋๋ค.
- ์์ ๊ฐ์ด ํ ํด๋์ค ๋ด์์ (HTTP๋ฉ์๋ ์๋ฌธ์๋ช ) ์ ํ์ด์ฌ ๋ฉ์๋๋ฅผ ์์ฑํ์ฌ API๋ฅผ ๊ตฌํํ๋ ๊ฒ์ Django REST Framework์์๋ ๋น์ทํ๊ฒ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค.
- ์์ผ๋ก ์งํ๋ ์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ ํ๋ก์ ํธ๋ฅผ ์ํด์ ๊ผญ ์ตํ๋์ด์ผ ํ๋ ์ํผ์๋์ ๋๋ค.
[REAL Python - Flask] - "Flask HTTP API(2) - Flask-RESTful ๋ก ์์ฑ, ์กฐํ api ๊ตฌ์ถํ๊ธฐ"
[REAL Python - Flask] - "Flask HTTP API(3) - Flask-RESTful ๋ก ์ญ์ , ์์ api ๊ตฌ์ถํ๊ธฐ"
- ์์ ์ค์ต์ ์ ๋ฐ๋ผํ์ จ๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ์ดํดํ์ จ๋ค๋ฉด ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๋ API ์๋ฒ๋ฅผ ๋ง๋ ๋ค๋ ๊ฒ์ ๊ฒฐ๊ตญ, JSON ํน์ XML ๋ฑ์ ํ์์ ํ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์๋ต์ ํ ์ ์๊ฒ๋ ํด์ผ ํ๋ค๋ ๊ฒ์ ์ดํดํ์ จ์ ๊ฒ์ ๋๋ค.
- ์์, ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ SQL ์ฟผ๋ฆฌ๋ฌธ์ด ์๋ ํ์ด์ฌ์ ํด๋์ค๋ก ๋ค๋ฃฐ ์ ์๋ค๋ ๊ฒ์ ๋ฐฐ์ ์ต๋๋ค. ์ด๋ฅผ ORM์ด๋ผ๊ณ ํ์์ฃ ? ๊ทธ๋ฐ๋ฐ ๋ฌธ์ ๋, ์์ฑํ ํ์ด์ฌ ํด๋์ค์ ๋ชจ๋ธ ์ธ์คํด์ค๋ฅผ JSON์ผ๋ก ๋ณํํ์ฌ ์๋ตํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋๋ฐ ๊ทธ๊ฒ์ ์ด๋ป๊ฒ ํ๋๊ฐ? ์ ๋๋ค.
- ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์, ์์ ํ์ด์ฌ์ผ๋ก ์ธ์คํด์ค๋ฅผ JSON์ผ๋ก ์ง๋ ฌํํ๋ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด๊ณ , ๊ทธ ์ด๋ ค์์ ํด๊ฒฐํ๊ธฐ ์ํด Marshmallow ๋ผ๋ ์ง๋ ฌํ / ์ญ์ง๋ ฌํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ฐ๋จํ ์ฌ์ฉ๋ฒ์ ์์๋ด ๋๋ค.
- ์์ผ๋ก ์งํ๋ ์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ ํ๋ก์ ํธ๋ฅผ ์ํด์ ๊ผญ ์ตํ๋์ด์ผ ํ๋ ์ํผ์๋์ ๋๋ค.
- flask ๋ Django ์๋ ๋ฌ๋ฆฌ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ๋ฑ์ ๋ํด์ ์์ ๋๊ฐ ๋์ ํ๋ ์์ํฌ์ ๋๋ค. ์กฐ๊ธ ๋ ๊ท๋ชจ์๋ ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์ ์ฒด์ ์ธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์ ํ์ ์ก๋ ๊ณผ์ ์ ์ํํฉ๋๋ค.
- ํ์ด์ฌ์์ ํจํค์ง ๊ด๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด์, requirements.txt ์ ๊ฐ์ ํ์ผ๋ค์ ๋ง๋ค์ด ๋ณด๊ณ , ๊ฐ๋ฐ์ฉ ํ๊ฒฝ, ๋ฐฐํฌ์ฉ ํ๊ฒฝ์ ๋ํ ํจํค์ง ๊ด๋ฆฌ๋ฅผ ์ด๋ป๊ฒ ์ํํ๋์ง์ ๋ํด์๋ ๊ฐ๋ตํ ์์๋ด ๋๋ค.
- ์ํฌ๋ฆฟ ํค์ ๊ฐ์ ๋ถ๋ถ๋ค์ ๊นํ๋ธ ์ ์ฅ์์ ์ฌ๋ผ๊ฐ๋ฉด ์ ๋๋ ์ ๋ณด์ ๋๋ค. ๊ทธ๋ฌํ ํ์ผ๋ค์, .env ๋ก ํ๊ฒฝ ๋ณ์๋ก์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
[REAL Python - Flask] - "์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ - Instagram Clone (1)"
์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ ํ๋ก์ ํธ (2) - ๊ฒ์๋ฌผ ๋ชฉ๋ก, ์์ธ์ ๋ํ CRUD API ๊ตฌํํ๊ธฐ
- ์ธ์คํ๊ทธ๋จ์ ์ค์ ๊ธฐ๋ฅ ์ค ํ๋์ธ ๊ฒ์๋ฌผ์ ๋ค๋ฃจ๋ ๋ฐฉ๋ฒ์ ์์๋ด ๋๋ค.
- /posts/ ์ ๋ํ GET, POST ์์ฒญ์ ์๋ตํ๋ API ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- /posts// ์ ๋ํ, GET / PUT / DELETE ์์ฒญ์ ์๋ตํ๋ API ๋ฅผ ๊ตฌ์ถํฉ๋๋ค.
- ํ์ด์ฌ์ Unittest ํจํค์ง๋ฅผ ํ์ฉํด ์์ ์ด ๋ง๋ GET ์์ฒญ์ ๋ํ API ๋ฅผ ํ ์คํธํด ๋ด ๋๋ค.
- ๊ฒ์๋ฌผ ๋ชฉ๋ก์ ๋ํ ํ์ด์ง๋ค์ด์ ์ฒ๋ฆฌ๋ฅผ ์ํํฉ๋๋ค.
[REAL Python - Flask] - "์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ - Instagram Clone (2)"
์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ ํ๋ก์ ํธ (3) - ํ๋ก ํธ์๋ ๋จ์์ ์ฐ๊ฒฐํด ๋ณด๊ณ , ํ์๊ฐ์ ๊ตฌํํ๊ธฐ
- ์ด์ ์ ๋ง๋ค์ด ๋์๋, ๊ฒ์๋ฌผ ๋ชฉ๋ก API ๋ฅผ ํ๋ก ํธ์๋ ๋จ์์ ์ฌ์ฉํด ๋ด ๋๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ์ fetch() ๋ฅผ ์ฌ์ฉํด ๊ฒ์๋ฌผ์ ๋ด์ฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ์ธ์คํ๊ทธ๋จ ๊ฒ์๋ฌผ ํ์ด์ง๋ฅผ ๊ตฌํํฉ๋๋ค.
- ํ์๊ฐ์ ์ ์ฒ๋ฆฌํฉ๋๋ค. ํผ์์ ํ์๊ฐ์ ์ ์งํํ๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ, ํ๋ก ํธ์๋์์ JSON ์ ์ฃผ๊ณ ๋ฐ์ผ๋ฉฐ ์งํํ ์ ์์ต๋๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก, ๋น๋ฐ๋ฒํธ ํด์ฑ์ ์ ์ฉํฉ๋๋ค.
[REAL Python - Flask] - "์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ - Instagram Clone (3)"
์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ ํ๋ก์ ํธ (4) - JWT ๋ฐ๊ธ, ๊ฒ์๋ฌผ ์์ฑ ์ ๋ก๊ทธ์ธํ ์ฌ๋์ด ์ ์๋ก ์๋ ์ถ๊ฐ๋๋๋ก ๊ตฌํํ๊ธฐ
- JSON ์น ํ ํฐ์ ๋ ๋น์ฌ์ ๊ฐ์ ํด๋ ์์ ์์ ํ๊ฒ ํํํ๊ธฐ ์ํย ๊ฐ๋ฐฉํ ์ ๊ณ ํ์ค ๋ฐฉ๋ฒ์ ๋๋ค.
- https://www.rfc-editor.org/rfc/rfc7519 ์ ๊ทธ๊ฒ์ ํ์ค์ด ์ ์๋์ด ์์ต๋๋ค.
- ์ด๋ฒ ์๊ฐ์๋, JWT๋ฅผ ์๋ฒ์์ ์ง์ ๊ตฌํํด ๋ณด๋ฉฐ, ๋ก๊ทธ์ธ์ ์ํด์ ๋ฐฑ์๋ ๋จ์์ ๋ฌด์์ ์ค๋นํด์ผ ํ๋์ง๋ฅผ ์์๋ด ๋๋ค.
- ๊ตฌํํ์ผ๋ฉด ์๊ณ ๋ก ์จ ๋ด์ผ๊ฒ ์ฃ ? ์ค์ ์๋น์ค์์ ๊ฒ์๋ฌผ์ด๋ ํผ๋ ๋ฑ์ ์์ฑํ ๋์๋ โํ์ฌ ๋ก๊ทธ์ธํ ์ฌ๋โ ์ด โ๊ฒ์๋ฌผ์ด๋ ํผ๋์ ์์ฑ์โ ๋ก ์ถ๊ฐ๋๋๋ก ํด์ผ ํฉ๋๋ค. ๋ก๊ทธ์ธ์ ํตํด์ ์ด ๋ถ๋ถ์ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
[REAL Python - Flask] - "์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ - Instagram Clone (4)"
์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ ํ๋ก์ ํธ (5) - Werkzeug, WSGI, NGNIX ์์๋ณด๊ณ , ๊ฒ์๋ฌผ์ ์ด๋ฏธ์ง๋ฅผ ๋ถ์ฌ ์ ๋ก๋ํ๊ธฐ
- Flask ์์ ์ด๋ฏธ์ง๋ฅผ ์ด๋ป๊ฒ ๋ค๋ฃจ๋์ง ์์๋ณด๊ณ , ์ด๋ฏธ์ง ์ ๋ก๋๋ฅผ ์ํ ๋ณ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์์ฑํด ๋ด ๋๋ค.
- JavaScript๋ก ๊ฒ์๋ฌผ ์ ๋ก๋ ๋ก์ง์ ๊ตฌํํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ด๋ค ๊ฒ์ด ์ ์ฅ๋๊ณ , ํ๋ก ํธ์๋ ๋จ์์๋ ์ด๋ค ์ ๋ณด๊ฐ ํ์ํ์ง์ ๋ํด์ ์์๋ด ๋๋ค.
[REAL Python - Flask] - "์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ - Instagram Clone (5)"
- ์ฐ๋ฆฌ๋ ์์ ๊ฒ์๋ฌผ API๋ฅผ ๊ตฌํํ๋ฉฐ ํ์ด์ง๋ค์ด์ ์ ๊ตฌํํ์ต๋๋ค.
- ํ์ด์ง๋ค์ด์ ์ ์๋ฏธ ์ค ์ค์ํ ๊ฒ์, ๋ง์ฝ ์ฌ์ฉ์๊ฐ โ๊ฒ์๋ฌผ ๋ชฉ๋ก ์กฐํโ ๋ฅผ ์์ฒญํ๋ค๋ฉด, ๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ 1์ต ๊ฐ์ ๊ฒ์๋ฌผ์ด ์๋ค๋ฉด, ๊ทธ๊ฒ์ ์๋ฒ์์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ชจ๋ ๋ณด๋ด์ค ๊ฒ์ธ๊ฐ? ๋ผ๋ ์๋ฌธ์ ์์ ์์ํ์ต๋๋ค. ์ฝ์์ง, ์ฝ์ง ์์์ง ๋ชจ๋ฅด๋ 1์ต ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๋ด๋ ค๋ณด๋ด ์ฃผ๋ ๊ฒ์ ๊ต์ฅํ ๋ญ๋น์ผ ๊ฒ๋๋ค. ์ด๋ฒ ์๊ฐ์๋, ๋ฐฑ์๋์์ ๊ตฌํํ ํ์ด์ง๋ค์ด์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ก ํธ์๋์์ ์ค์ ์ธ์คํ๊ทธ๋จ๊ณผ ๋น์ทํ๊ฒ โ์คํฌ๋กค์ ๋ด๋ฆฌ๋ฉด ๊ณ์ ๊ฒ์๋ฌผ์ด ๋ก๋๋๋๋กโ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
[REAL Python - Flask] - "์ธ์คํ๊ทธ๋จ ํด๋ก ์ฝ๋ฉ - Instagram Clone (6)"















