Stove DevCamp Assignment Topic 1: URL Shortener
- Python 3.9.2
- Flask 2.0.2
- Werkzeug 2.0.2
# clone project repo
git clone https://github.com/rachel5004/StoveDevAssign.git
cd <project>
# install libs
pip install -r requirements.txt
# DB setting
flask db init
flask db migrate
flask db upgrade
# start app
export FLASK_APP=urlcutter/__init__.py; export FLASK_ENV=development; flask run
- 1. ์น ํ์ด์ง ์ ๋ ฅํผ์ URL ์ ๋ ฅ ์ ๋จ์ถ๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ
- 2. ๋ธ๋ผ์ฐ์ ์ ์ฃผ์์ฐฝ์ ๋จ์ถ URL ์ ๋ ฅ ์ ๊ธฐ์กด URL๋ก ๋ฆฌ๋ค์ด๋ ํธ
- 3. ๊ฐ์ URL ์ ๋ ฅ ์ ๋์ผํ ๊ฒฐ๊ณผ๊ฐ ๋์ถ
- 4. ๊ฒฐ๊ณผ๊ฐ์ ์ฃผ์๋ฅผ ์ ์ธํ๊ณ 8๊ธ์ ์ด๋ด๋ก ์์ฑ
method | uri |
---|---|
GET | /url |
POST | /url |
{
// post์ ๊ฒฝ์ฐ
request: {
url : ""
}
response: "shortcut"
}
method | uri |
---|---|
GET | /<shortcut> |
{
response: CODE 302
}
base64๋ฅผ ์ฌ์ฉํ๋ฉด ๋ ์งง์ ๊ธธ์ด๋ก ์ถ์๊ฐ๋ฅํ์ง๋ง, base64๋ '+', '=', '/'์ ๊ฐ์ ๋ฌธ์๋ค์ด ํฌํจ๋์ด URL SAFEํ์ง๊ฐ ์์ต๋๋ค. ๋๋ฌธ์ base62๋ก ์ธ์ฝ๋ฉํ์ต๋๋ค.
์๋ณธ url์ ๊ทธ๋๋ก ์ธ์ฝ๋ฉํ๋ฉด ๊ฒฐ๊ณผ๊ฐ์ด ๊ธธ์ด์ง๊ฒ ๋๋ฏ๋ก, DB์ ์ ์ฅ ํ ์์ฑ๋ id๊ฐ์ ๊ธฐ๋ฐ์ผ๋ก ๋จ์ถURL์ ์์ฑํ์ต๋๋ค.
secrets ๋ชจ๋์ token_urlsafe ํจ์๋ฅผ ์ด์ฉํ๋ฉด base64 ์ธ์ฝ๋ฉ ๊ธฐ๋ฐ์ URL SAFEํ ๋ฌด์์ ํ ์คํธ ๋ฌธ์์ด์ ๋๋ ค์ค๋๋ค. ์ ํจ์๋ฅผ ์ฌ์ฉํด ๋จ์ถURL์ ์์ฑํ๋ ๋ฐฉ๋ฒ๋ ์ ์ฉํ ์ ์์ต๋๋ค.