๋์๊ด์ ํต์ฌ์ ์ธ ๊ธฐ๋ฅ๊ณผ ๋ถ๊ฐ์ ์ธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์น ์๋น์ค์ ๋๋ค.
ํ์๊ฐ์ , ๋์ ๋์ฌ, ๋ฐ๋ฉ, ๊ฒ์, ์กฐํ, ๋๊ธ ์์ฑ ๊ธฐ๋ฅ
๋ฑ ์ ๊ณต
- Flask
- SQLAlchemy + Migrate
- PyMySQL + MySQL
- Marshmallow
- Flask-RESTX
- HTML + Flask Jinja2 + Bootstrap
- JQuery
- Azure VM (OS: Ubuntu LTS 18.04)
- Black
๊ธฐ๋ฅ ๋์ ๊ณ์ธต ์์ฃผ๋ก ๊ตฌ์กฐ๋ฅผ ๋๋์์ต๋๋ค.
// ๊ฐ ํจํค์ง๋ณ __init__.py๋ ์๋ต
elice_library
โโ static: css, js, images ํ์ผ ๊ด๋ฆฌ
โโ templates: html ํ์ผ ๊ด๋ฆฌ
โโ database
โ โโ config.py: db ์ธ์คํด์ค
โโ domain
โ โโ models
โ โ โโ user.py: User ๋ชจ๋ธ ์ ์
โ โ โโ book.py: Book ๋ชจ๋ธ ์ ์
โ โ โโ [...].py: ๊ทธ ์ธ ๋ชจ๋ธ ์ ์
โ โโ schemas
โ โโ user_schema.py: User ์คํค๋ง ์ ์
โ โโ [...].py: ๊ทธ ์ธ ์คํค๋ง ์ ์
โโ services
โ โโ user_service.py: User ๋ชจ๋ธ๊ณผ ๊ด๋ จ๋ ๋ก์ง ์ํ
โ โโ book_service.py: Book ๋ชจ๋ธ๊ณผ ๊ด๋ จ๋ ๋ก์ง ์ํ
โ โโ [...].py: ๊ทธ ์ธ service
โโ controllers
โ โโ user_controller.py : User๊ณผ ๊ด๋ จ๋ HTTP request ํธ๋ค๋ง
โ โโ book_controller.py : Book๊ณผ ๊ด๋ จ๋ HTTP request ํธ๋ค๋ง
โ โโ [...].py: ๊ทธ ์ธ controller
โโ utils
โ โโ config : ์ฑ config
โ โโ errors.py : error ํด๋์ค ์ ์
โโ __init__.py : create_app ํจ์ ์ ์
โโ routes.py : Namespace๋ณ api routes ์ฐ๊ฒฐ
git clone https://kdt-gitlab.elice.io/001_part2_project-library/team1/elice-library.git
python -m venv venv // ๊ฐ์ ํ๊ฒฝ ํด๋ ์์ฑ
source venv/[Scripts|bin]/activate // ๊ฐ์ ํ๊ฒฝ ์ ์
pip install -r requirements.txt // ํ์ํ ํจํค์ง ์ค์น
// elice_library/utils/config.py
// ์๋์ ๊ฐ์ด ์ค์
// ํน์ .env ํ์ผ ์ด์ฉ
SECRET_KEY = [์ฌ์ฉ์ ๊ณ ์ ๋น๋ฐํค ์ง์ ]
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{user}:{pw}@{host}:{port}/{db}?
charset=utf8'.format(
user = [์ฌ์ฉ์ MySQL ๊ณ์ ],
pw = [์ฌ์ฉ์ MySQL ๋น๋ฐ๋ฒํธ],
host = [์ฌ์ฉ์ host],
port = [์ฌ์ฉ์ port],
db = [์ฌ์ฉ์ db ์ด๋ฆ]
)
SQLALCHEMY_TRACK_MODIFICATIONS = False
flask db init // migrations ๋๋ ํ ๋ฆฌ ์์ฑ
flask db migrate // ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ ํ
์ด๋ธ ์์ฑ ๋ฐ ๋ณ๊ฒฝ
flask db update // ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐฑ์
python load_data.py
python run.py
-
ํต์ฌ ๊ธฐ๋ฅ ๊ตฌํ (์๋ ๊ธฐ๋ฅ ์์ธ ์๊ฐ ์ฐธ๊ณ )
ํ์๊ฐ์
๋ก๊ทธ์ธ / ๋ก๊ทธ์์
๋์ฌํ๊ธฐ
๋ฐ๋ฉํ๊ธฐ
๋์ฌ ๊ธฐ๋ก
๋ฐ๋ฉ ๊ธฐ๋ก
์ฑ ๋ชฉ๋ก ํ์ด์ง
์ฑ ์๊ฐ ํ์ด์ง
๋๊ธ ์์ฑ -
๊ฐ๋จํ UI/UX ์์
-
๋ชจ๋ํ / ๊ด์ฌ์ฌ ๋ถ๋ฆฌ ๋ฆฌํฉํ ๋ง (์์ ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ ์ฐธ๊ณ )
-
๋ถ๊ฐ ๊ธฐ๋ฅ ๊ตฌํ
๋๊ธ ์์ ๋ฐ ์ญ์
๋์ ๊ฒ์
๋์ ํ์ ์ฐจํธ
์ถ๊ฐ์ผ, ํ์ , ๋์ฌํ์, ๋๊ธ ๊ฐ์ ์์ผ๋ก ์ ๋ ฌ๋ ์ฑ ๋ชฉ๋ก ํ์ธ
์ฑ ์ถ์ฒํ๊ธฐ ๋ฐ ์ฐํ๊ธฐ
๊ฐ์ธ ๋ง์ถค ์ ๋ณด ํ์ธ (๋ด๊ฐ ์ฐํ ๋์, ์ถ์ฒํ ๋์, ๋๊ธ ๋จ๊ธด ๋์ ๋ชฉ๋ก ํ์ธ)
๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
ํ์ ํํด -
UI/UX ์์ ๋ฐ ๋ณด์
์์ด๋(์ด๋ฉ์ผ), ๋น๋ฐ๋ฒํธ, ์ด๋ฆ
์ ํ์ ์ ๋ ฅ ์ฌํญ์ ๋๋ค.- ์์ด๋๋
์ด๋ฉ์ผ ํ์
์ด์ด์ผ ํฉ๋๋ค. - ์ด๋ฆ์
ํ๊ธ, ์๋ฌธ
์ผ๋ก๋ง ์ ๋ ฅํด์ผ ํฉ๋๋ค. - ๋น๋ฐ๋ฒํธ์ ๋น๋ฐ๋ฒํธ ํ์ธ์
๊ฐ์ด ์ผ์น
ํด์ผ ํฉ๋๋ค. - ๋น๋ฐ๋ฒํธ๋
์๋ฌธ, ์ซ์, ํน์๋ฌธ์ 3์ข ๋ฅ
์ด์์ ์กฐํฉํ์ฌ์ต์ 8์๋ฆฌ ์ด์
์ ๊ธธ์ด๋ก ๊ตฌ์ฑํด์ผ ํฉ๋๋ค.
์์ด๋(์ด๋ฉ์ผ)์ ๋น๋ฐ๋ฒํธ
๋ ํ์ ์ ๋ ฅ ์ฌํญ์ ๋๋ค.- ์์ด๋๋
์ด๋ฉ์ผ ํ์
์ด์ด์ผ ํฉ๋๋ค. - ๋ก๊ทธ์ธํ ์ ์ ๋
session
์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค.
- ํ์ฌ ๋ก๊ทธ์ธํ ์ฌ์ฉ์๋ฅผ ๋ก๊ทธ์์ํฉ๋๋ค.
- ๋ก๊ทธ์์ํ ์ ์ ๋ฅผ ํ์ฌ session์์ ์ ๊ฑฐํฉ๋๋ค.
- ํ์ฌ DB ์์ ์กด์ฌํ๋
๋ชจ๋ ์ฑ ์ ๋ณด
๋ฅผ ๊ฐ์ ธ์ต๋๋ค. - ํ์ฌ DB ์์ ์กด์ฌํ๋
๋จ์ ์ฑ ์ ์
๋ฅผ ํ๊ธฐํฉ๋๋ค. - ์ฑ
์ด๋ฆ์ ํด๋ฆญ ์
์ฑ ์๊ฐ ํ์ด์ง
๋ก ์ด๋ํฉ๋๋ค. ์ฑ ์ ํ์
์ ํ์ฌ DB ์์ ๋ด๊ฒจ์๋ ๋ชจ๋ ํ์ ์ ํ๊ท ์ผ๋ก ํ์ํฉ๋๋ค. (์ซ์ ํ์๋ฆฌ์๋ก ๋ฐ์ฌ๋ฆผํ์ฌ ํ๊ธฐํฉ๋๋ค.)ํ์ด์ง๋ค์ด์
๊ธฐ๋ฅ์ ๋ฃ์ด ํ ํ์ด์ง ๋น 8๊ถ์ ์ฑ ๋ง์ ํ๊ธฐํฉ๋๋ค.
- ๋ฉ์ธ ํ์ด์ง์
์ฑ ์ด๋ฆ
์ ํด๋ฆญํ์ฌ ์ ๊ทผํฉ๋๋ค. ์ฑ ์ ๋ํ ์๊ฐ
๋ฅผ ์ถ๋ ฅํฉ๋๋ค.- ๊ฐ์ฅ
์ต์ ์ ๋๊ธ
์ด ๋ณด์ด๋๋กsorting
ํ์ฌ ๋ณด์ฌ์ค๋๋ค. - ๋๊ธ์ ์์ฑํจ์ผ๋ก์จ ์ฑ
์ ๋ํ
ํ๊ฐ ์ ์
๋ฅผ ๊ธฐ์ ํฉ๋๋ค. ๋๊ธ ๋ด์ฉ
๊ณผํ๊ฐ ์ ์
๋ ๋ชจ๋ โํ์ ์ ๋ ฅโ ์ฌํญ์ ๋๋ค.- ๋์ผํ ์ฌ์ฉ์๋ ๋์ผ ์ฑ ์ ํ ๋ฒ๋ง ํ์ ์ ๋งค๊ธธ ์ ์์ต๋๋ค.
- ์ฑ
์๊ฐ ํ์ด์ง์์๋
๋์ฌํ๊ธฐ, ์ฐํ๊ธฐ, ์ถ์ฒํ๊ธฐ
๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๋ฉ์ธ ํ์ด์ง์
๋์ฌํ๊ธฐ ๋ฒํผ
์ ํด๋ฆญํ์ฌ ์คํํฉ๋๋ค. - ํ์ฌ DB ์์ ์ฑ
์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ,
๋์ฌ๋์ง ์์ต๋๋ค
. - ํ์ฌ DB ์์ ์ฑ
์ ์กด์ฌํ๋ ๊ฒฝ์ฐ, ์ฑ
์ ๋์ฌํ๊ณ
์ฑ ์ ๊ถ์๋ฅผ -1 ํฉ๋๋ค
. - ํ์ฌ DB ์์ ์ฑ
์ด ์กด์ฌํ์ง ์๋ ๊ฒฝ์ฐ, ์ฌ์ฉ์์๊ฒ ๋์ฌ๊ฐ
๋ถ๊ฐ๋ฅํ๋ค๋ ๋ฉ์ธ์ง๋ฅผ ๋ฐํ
ํฉ๋๋ค. - ์ ์ ๊ฐ ์ด๋ฏธ ์ด ์ฑ
์ ๋์ฌํ์ ๊ฒฝ์ฐ, ์ด์ ๋ํ
์๋ด ๋ฉ์ธ์ง๋ฅผ ๋ฐํ
ํฉ๋๋ค.
๋ฐ๋ฉํ๊ธฐ ๋ฒํผ
์ ํตํด ์ฑ ์ ๋ฐ๋ฉํฉ๋๋ค.- ์ฑ
์ ๋ฐ๋ฉํ ํ DB ์์
์ฑ ์ ๊ถ์๋ฅผ +1 ํฉ๋๋ค.
- ๋ก๊ทธ์ธํ ์ ์ ๊ฐ
๋์ฌํ ์ฑ ์ ๋ชจ๋
๋ณด์ฌ์ค๋๋ค. - ๋ก๊ทธ์ธํ ์ ์ ๊ฐ ๋์ฌ ํ
๋ฐ๋ฉํ๋ ์ฑ ์ ๋ํ ๋ชจ๋ ๊ธฐ๋ก
์ ๋ณด์ฌ์ค๋๋ค.
- ๋น๋ฐ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ํ์ฌ ๋น๋ฐ๋ฒํธ์ ๋ค๋ฅธ ์๋ก์ด ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค.
- ์ ํจ์ฑ ๊ฒ์ฌ๋ ํ์๊ฐ์ ์์ ๊ฒ์ฌ์ ๋์ผํฉ๋๋ค.
- ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅ ํ ํ์ํํด๋ฅผ ํฉ๋๋ค. (์ฑ ์ด ๋ชจ๋ ๋ฐ๋ฉ๋์ด ์์ด์ผ ํฉ๋๋ค.)
- ๊ฒ์์ด๋ฅผ ์ ๋ ฅํ์ ๋ ๊ฒ์์ด์ ํด๋นํ๋ ์ด๋ฆ์ ๊ฐ์ง ์ฑ ๋ชฉ๋ก์ ๋ถ๋ฌ์ต๋๋ค.
- ์ด๋ฆ์ด
ํ๊ธ ๋๋ ์์ด
๋ก๋ง ๊ตฌ์ฑ๋๋์ง, ๋น๋ฐ๋ฒํธ๊ฐ์๋ฌธ, ์ซ์, ํน์๋ฌธ์ 3์ข ๋ฅ ์ด์์ ์กฐํฉํ์ฌ ์ต์ 8์๋ฆฌ ์ด์์ ๊ธธ์ด
๋ก ๊ตฌ์ฑ๋๋์ง ํ์ธํ๋ ์ ํจ์ฑ ๊ฒ์ฌ๊ฐ ์กฐ๊ธ ์ด๋ ค์ ์ต๋๋ค
>
์ฒ์์ ์ ๊ทํํ์์ ์ฌ์ฉํด์ผ๊ฒ ๋ค๊ณ ์๊ฐํ์ง๋ง, ๋ง์ ์ฐ๋ ค๋ ์ ์จ์ง์ง ์์์ต๋๋ค.
๊ทธ๋์ ์๋ฆฌ์ค ํ์ต ์๋ฃ๋ฅผ ๋ค์ ๋ณด๊ณ , ๊ตฌ๊ธ๋ง์ ํ๋ฉด์ ์ ๊ทํํ์์ ๋ณต์ตํ์ต๋๋ค.
์ดํ re
ํจํค์ง์ ๋ฉ์๋(match
, search
๋ฑ)์ ๊ณต๋ถํ์๊ณ , ์ด ๋ ๊ฐ์ง๋ฅผ ์กฐํฉํด ๊ธฐ๋ฅ์ ์์ฑํ์ต๋๋ค.
-
๋ฆฌ๋ ์ค๋ฅผ ๋ฐฐ์ฐ๊ธด ํ์ง๋ง ์ ์ฌ์ฉํด๋ณด์ง ์์๊ธฐ ๋๋ฌธ์ ๋ช ๋ น์ด๋ค์ด ์กฐ๊ธ ๋ฏ์ค์์ต๋๋ค.
>
์๋ฆฌ์ค 2์ฃผ์ฐจ ๋ ๋ฐฐ์ด ๋ด์ฉ์ ๊ณ์ ๋ฐ๋ผํด๋ณด๋ ๋ฐฉ๋ฒ์ผ๋ก, ์ ์ฐจ ์ต์ํด์ก์ต๋๋ค. -
ssh(secure shell)
์ ๋ํด ์ ์์ง ๋ชปํ์ต๋๋ค.>
์ธ๋ถ ์ปดํจํฐ์ ์ ๊ทผํ๋๋ก ๋์์ฃผ๋ ํ๋กํ ์ฝ ์ค ํ๋๋ผ๋ ๊ฑธ ์๊ฒ ๋์ต๋๋ค. -
DB ๊ด๋ จํด์๋ ๊ถ๊ธํ๊ฑฐ๋ ์ด๋ ค์ด ๋ถ๋ถ์ด ์์์ต๋๋ค.
- ๋ก์ปฌ db๋ฅผ ๊ทธ๋๋ก azure์ ์ฎ๊ธธ ์ ์๋์ง
- migrations ํ์ผ์ git repo์ ์ฌ๋ ค์ผํ๋์ง ์ฌ๋ฆฌ์ง ๋ง์์ผํ๋์ง
- ์ฌ๋ฆฐ๋ค๋ฉด azure์์ git pull๋ง ํ๋ฉด ๋๋๋ ๊ฑด์ง ๋ฑ,,
>
์๋ ์ฝ์น๋์ ์ค๋ช ์ ๋ฃ๊ณ ๊ถ๊ธ์ฆ์ ํ ์ ์์์ต๋๋ค.ssh๋ก azure ์ ์ -> mysql server ์ค์น -> flask app ์ค์ -> migrations ์งํ ๋ฑ
ํ๋ก์ ํธ๋ฅผ ์งํํ๋ ์ค, ๋ฐฐ๋ฌ์ ๋ฏผ์กฑ ๊ฐ๊ฒ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๋ค๊ฐ ์๋ ํ์ ์ฐจํธ๊ฐ ๋์ ๋์์ต๋๋ค.
๋์๊ด์ ์ฑ
๋ ๊ฐ๊ฒ์ฒ๋ผ ์ฌ๋ฌ ๋ช
์ ๋ณ์ ์ ๊ฐ๊ณ ์์ผ๋, ์์ ๊ฐ์ด ํํํ ์ ์๊ฒ ๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ฐจํธ๋ฅผ ๋ง๋ค์ด๋ณธ ๊ฒฝํ์ ์์ด์ ๊ตฌ๊ธ๋ง์ ๋ฐ๋ก ์์ํ์ต๋๋ค.
์ฐธ๊ณ ๋ก ๊ธฐ์กด ํ์์ ๋จผ์ ์ดํด๋ณด๋ฉด, ์๋ ์ฌ์ง์ฒ๋ผ ๋๊ธ ๋ชฉ๋ก์์ ์ฌ๋ฌ ๋ช
์ ๋ณ์ ์ ํ์ธํ ์ ์์ต๋๋ค.
ํ์ง๋ง ๋๊ธ์ด ๋ง์์ก์ ๋ ๋ณ์ ๋ถํฌ๊ฐ ์ด๋ป๊ฒ ๋๋์ง ํ๋์ ํ์
ํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค.
>
์ฐจํธ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํด์ ํ์ด ํ์ํ๊ณ , ์ ๋ Goole Charts
์ Bar Charts
๋ฅผ ์ฌ์ฉํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ ๋ฐฉ๋ฒ๋๋ก ์ฑ
์ ๋ณ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ๊ทธ๋ํ์ ๋ฐ์ดํฐ๋ก ํ์ฉํ์ต๋๋ค.
- ๋จผ์ ๋ book์ ๋ชจ๋ comments๋ฅผ ๊ฐ์ ธ์จ ํ, ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ comment์ rating(1~5์ )์ ์ป์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ฏธ๋ฆฌ ๋ง๋ rating list์ rating์ ๊ฐ๊ฐ ์ ์๋ณ๋ก 1๊ฐ์ฉ ๋ํด์ฃผ์ด ์ ์ฒด ๋ถํฌ ๋ฐ์ดํฐ๋ฅผ ์ป์ต๋๋ค.
- ๋ง์ง๋ง์ผ๋ก ์ด๋ ๊ฒ ์ป์ rating list๋ฅผ ๊ทธ๋ํ์ ๋ฐ์ดํฐ๋ก ๋ฃ์ด, ์ต์ข ์ ์ธ ๊ทธ๋ํ๋ฅผ ์์ฑํฉ๋๋ค.
์๋ ๊ทธ๋ํ๋ ์์ ๋๊ธ ์ฌ์ง๊ณผ ์ฐ๋๋ ์ฐจํธ์ ๋๋ค.
๊ฐ์ธ์ ์ผ๋ก ์ฝ๋์ ๋์์ธ์ ๋ ๊ฐ์ ํด๋ณด๊ณ ์ถ์ต๋๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ฅ ์ข์๋ ๊ฒฝํ ์ค ํ๋๋,
ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ง์ ์ฐพ์๋ณด๊ณ , ์ด๋ฅผ ์ค์ค๋ก ์ ์ฉํด๋ณด์๋ค๋ ๊ฒ์
๋๋ค.
(์ด๋ฒ ํ๋ก์ ํธ์์๋ ์ ํจ์ฑ ๊ฒ์ฌ ๋๋ ์ง๋ ฌํ
๋ฅผ ์ํด Marshmallow ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ,๋น ๋ฅธ REST API ๋น๋ฉ
์ ์ํด Flask-RESTX ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ต๋๋ค.)
๋๊ตฐ๊ฐ ์ ์ ๋ฆฌํ ์ฝ๋๋ฅผ ๊ธฐ๊ณ์ ์ผ๋ก ๋ฐ๋ผ๊ฐ๋ ๋ฐฉ์์ด ์๋๋ผ
๊ณต์ ๋ฌธ์์์ ์์ํด, ํ์ํ ๊ธฐ๋ฅ๋ค์ ์ง์ ๊ฐ์ ธ์ ์ฌ์ฉํด๋ณด์๋๋ฐ
์๋์ ๊ฐ์ ์ด์ ์ ์ป์ ์ ์์์ต๋๋ค.
-
์ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฑ์ฅ ๋ฐฐ๊ฒฝ์ ๋ช ํํ ์ ์ ์์์ต๋๋ค.
2์ฐจ ๊ฐ๊ณต๋ ๋ฌธ์๋ณด๋ค, ๊ณต์ ๋ฌธ์๋ฅผ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฌ์ฉ ๋ชฉ์ ์ ๋ถ๋ช ํ ์ ์ ์์์ต๋๋ค. -
๊ฐ๋จํ ๊ธฐ๋ณธ ์์ (Quickstart) ๋ฅผ ํตํด ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ๋ฐ์ ์ธ ๋งฅ๋ฝ์ ์ดํดํ ์ ์์์ต๋๋ค.
-
ํน์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ ๋์์ด ๋ฌด์์ธ์ง, ์ปค์คํ ๊ฐ๋ฅํ ๋์์ ๋ฌด์์ธ์ง,
์ด๋์, ์ด๋ป๊ฒ ์ฌ์ฉ๋ ์ ์๋์ง ๊ธ์ ํ๋ฆ์ ๋ฐ๋ผ ์ฝ๊ฒ ์ดํดํ ์ ์์์ต๋๋ค. -
์ต์ ๋ฒ์ ์ด ๋ฌด์์ธ์ง,
deprecated
๋๋ ๊ธฐ๋ฅ์ด ๋ฌด์์ธ์ง ์ ์ ์์์ต๋๋ค.์๋ฅผ ๋ค์ด
Flask-RESTX
์ ๊ฒฝ์ฐ, Request Parsing ๊ธฐ๋ฅ์ด ๊ณง ์ ๊ฑฐ๋ ์์ ์ด๋ฉฐ, ๋ค๋ฅธ ๋ฐฉ์(marshmallow
)์ผ๋ก ๋์ฒด๋ ๊ฒ์ด๋ผ๋ ์ ๋ณด๊ฐ ๋์ ์์ต๋๋ค.
์ค๋ฒ ์์ง๋์ด๋ง์ ๋
์ด ๋๊ฒ ์ง๋ง,
ํ์ํ ๊ฒฝ์ฐ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์์ผ๋ก๋ ๊ณต์ ๋ฌธ์๋ฅผ ์ ๊ทน ํ์ฉํ ์๊ฐ์
๋๋ค!
์๋
8์, Effective Kotlin 1๊ธฐ ๊ณผ์ ์ ์ฐธ์ฌํ์ฌ ์ฒ์ ๋ฆฌํฉํ ๋ง์ ๋ํด ์๊ฒ ๋์๊ณ ,
๊ทธ ๋งค๋ ฅ์ ๊ธ๋ฐฉ ๋น ์ง๊ฒ ๋์์ต๋๋ค. ๊ฑฐ๊ธฐ์ ๋ฐฐ์ด ๋ด์ฉ๋ค์ ๋ ์ฌ๋ฆฌ๋ฉฐ ์ด๋ฒ ์ฝ๋์ ์ ์ฉ์์ผ ๋ณด์์ต๋๋ค.
ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์์๋ ์ ์ ์๋ฏ, ๊ด์ฌ์ฌ ๋ถ๋ฆฌ๊ฐ ์ฃผ๋ ๋ชฉํ์์ต๋๋ค.
ํผ์ ๋ง์ ๋ก์ง์ ๊ฐ๋นํ๋ views
๋ฅผ services
์ controllers
๋ก ๋๋์์ต๋๋ค.
๊ทธ ์ธ์๋ ํ์ํ ๋ถ๋ถ๋ค์ ๋๋์๊ณ , ๋์์ ํด๋ฆฐ ์ฝ๋๋ฅผ ์งํํ์ต๋๋ค.
๋น๋ก UI/UX์์ ๋ฌ๋ผ์ง๋ ๋ถ๋ถ์ ์์์ง๋ง
์ฝ๋์ ๊ฐ๋
์ฑ์ด ์ข์์ง ๋๋ง๋ค ๋ฟ๋ฏํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฑ
์์ ๋ถ๋ฆฌํ์ ๋ ๊ทธ์ ๋ฐ๋ผ ๊ด๋ฆฌ๊ฐ ๋ ์ฌ์์ง๋ค๋ ๊ฑธ ๋ชธ์ ๋๊ผ์ต๋๋ค.
์ด์ ์๋ DB์ ์๋ก์ด User
๋ฅผ ์ถ๊ฐํ๋ ๋ก์ง์ด, User
๋ชจ๋ธ๊ณผ views.py
์ ๊ฑธ์ณ ์์์ง๋ง,
๋ฆฌํฉํ ๋ง ์ดํ์๋ user_service
์์๋ง ๊ด๋ฆฌํ๋ฉด ๋์์ต๋๋ค.
์์ผ๋ก ๋์์ธ ํจํด ๋ฑ์ ๊ณต๋ถํด์ ์๋ก์ด ๋ฆฌํฉํ ๋ง ๋ฐฉ๋ฒ๋ค์ ์์๊ฐ๋ ๊ฒ๋ ์ฌ๋ฐ์ ๊ฒ ๊ฐ์ต๋๋ค!
์ด์ ๊น์ง ์๋ฌ ๋ฉ์์ง๋ ๋ ์คํธ๋ ์ค์์ต๋๋ค.
ํ์ง๋ง ์ด๋ฒ์ ์๋ง์ ์๋ฌ ๋ฉ์์ง๋ค์ ๋ง๋๋ฉด์ ์ด๋์ ์ ๋ ๋ชจ๋ฅด๊ฒ ์น๋ฐ๊ฐ์ด ์๊ฒผ์ต๋๋ค.
๋ฌผ๋ก ์์ง๊น์ง๋ ์น๊ตฌ๋ณด๋จ ์์์ ๋ ๊ฐ๊น์ต๋๋ค.
ํ์ง๋ง ๋ฉ์์ง์กฐ์ฐจ ๋์ ธ์ฃผ์ง ์๋ css์ ๋นํ๋ฉด
๋ฌด์ฌํ๊ฒ ๋ฉ์์ง๋ผ๋ ๋์ ธ์ฃผ๋ ์๋ฌ์๊ฒ ๊ทธ์ ๊ฐ์ฌํ ๋ง์์ด ๋ญ๋๋ค.
์น๊ตฌ์ ๋ง๋๊ณ ํค์ด์ง๋ฏ์ด,
์๋ฌ์ ๋ง๋๋ฉด ์๋ ์ ๋ฆฌํด๋ ๋ด์ฉ ๋๋ ๊ตฌ๊ธ๋ง์ ํตํด ํค์ด์ก์ต๋๋ค.
์์ฒ๋ผ ์๋ฌ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ๋ ๋งค์ฐ ์์คํ ๊ฒฝํ์ด์์ต๋๋ค.
๊ฐ์ง๊ฐ์์ ์๋ฌ์ ๋์ฒํ๋ฉด์, ์ฌ๋ฌ ๊ฐ์ง ๊ธฐ์ ๊ณผ ๊ฒฝํ์ ํฐ๋ํ ์ ์์ด ๊ธฐ๋ปค์ต๋๋ค.
์ด์ ๋ ์ด๋ค ์๋ฌ ๋ฉ์์ง๋ฅผ ๋ง๋๋ ์ด์ ๋ณด๋ค ์์ฐํ๊ฒ ๋์ฒํ ์ ์์ ๊ฒ ๊ฐ์ต๋๋ค.