ํฐ์คํ ๋ฆฌ ๋ทฐ
[๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด] 8์ฅ URL ๋จ์ถ๊ธฐ ์ค๊ณ
uijin-j 2024. 6. 24. 02:25
๐ฉ๐ป๐ซ URL ๋จ์ถ๊ธฐ๋ฅผ ์ค๊ณํด ์ฃผ์ธ์!
1๏ธโฃ URL ๋จ์ถ: ์ฃผ์ด์ง ๊ธด URL์ Short URL๋ก ๋ฐ๊ฟ์ค๋ค
- ์๋ณธ URL์ Short URL๋ก ๋จ์ถํด๋ฌ๋ผ๋ ์์ฒญ์ด ์ค๋ฉด Short URL์ ์ ๊ณตํ๋ค.
2๏ธโฃ URL ๋ฆฌ๋๋ ์ : Short URL๋ก HTTP ์์ฒญ์ด ์ค๋ฉด ์๋ ์๋ณธ URL๋ก ๋ฆฌ๋๋ ์ ์ฒ๋ฆฌํ๋ค.
์๋ณธ URL: https://docs.google.com/forms/d/e/1FAIpQLSdjLMLaq-B-5lw4By1lP80guXM972bFPLWS8xMP_1HQ7lmh6A/viewform?usp=sf_link
ShortURL: https://forms.gle/r4Bmp3fkbBhZrV1S6
โ๏ธ URL ๋จ์ถ๊ธฐ๋ฅผ ์ค๊ณํ ๋, ๊ณ ๋ คํด๋ณผ ์ ์๋ ๊ฒ๋ค
- URL์ ๊ธธ์ด
- ๋จ์ถ URL์ ํฌํจ๋ ๋ฌธ์ ์ ํ (ex. ์ซ์, ์๋ฌธ์)
- ๋จ์ถ URL์ ์์คํ ์์ ์ง์ฐ๊ฑฐ๋ ๊ฐฑ์ ํ ์ ์๋๊ฐ?
- ํธ๋ํฝ ๊ท๋ชจ
- ๊ณ ๊ฐ์ฉ์ฑ, ๊ท๋ชจ ํ์ฅ์ฑ, ์ฅ์ ๊ฐ๋ด
API ์๋ํฌ์ธํธ
URL ๋จ์ถ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ์ํด์ 2๊ฐ์ API ์๋ํฌ์ธํธ๊ฐ ํ์ํ๋ค!
1๏ธโฃ URL ๋จ์ถ์ฉ ์๋ํฌ์ธํธ
Post /api/v1/data/shorten
- ์ธ์: { longUrl: https://docs.google.com/forms/d/e/1FAIpQLSdjLMLaq-B-5lw4By1lP80guXM972bFPLWS8xMP_1HQ7lmh6A/viewform?usp=sf_link}
- ๋ฐํ: { shortUrl: https://forms.gle/r4Bmp3fkbBhZrV1S6 }
2๏ธโฃ URL ๋ฆฌ๋๋ ์ ์ฉ ์๋ํฌ์ธํธ
GET /r4Bmp3fkbBhZrV1S6
- ๋ฐํ
- 301 Moved Permanently, Location: https://docs.google.com/forms/d/e/1FAIpQLSdjLMLaq-B-5lw4By1lP80guXM972bFPLWS8xMP_1HQ7lmh6A/viewform?usp=sf_link
- 302 Found, ...
- HTTP 307 Temporary Redirect, ...
- 301๋ก ๋ฆฌ๋๋ ์ ํ๋ฉด ํด๋ผ์ด์ธํธ๋ ์ด ์๋ต์ ์บ์ํ๊ณ , ์ถํ ๊ฐ์ ๋จ์ถ URL์ ์์ฒญ์ ๋ณด๋ผ ํ์๊ฐ ์์ ๋, ์บ์๋ ์๋ณธ URL๋ก ์์ฒญ์ ๋ณด๋ธ๋ค!
URL ๋จ์ถ
๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๊ธด URL์ ํด์ ๊ฐ์ผ๋ก ๋์์ํฌ ํจ์ fx๋ฅผ ์ฐพ๋ ๊ฒ!
ํฌ๊ฒ ํด์ ๊ธฐ๋ฐ ๋ณํ, ID ๊ธฐ๋ฐ ๋ณํ 2๊ฐ์ง๊ฐ ์กด์ฌ!
ํด์ ๊ธฐ๋ฐ ๋ณํ
โ๏ธ ์ถฉ๋ ํ ํด์๋ฒ
1๏ธโฃ CRC32, MD5, SHA-2 ๊ฐ์ด ์ ์๋ ค์ง ํด์ ํจ์๋ฅผ ์ด์ฉํ์ฌ ์๋ณธurl์ ํด์ฑ
CRC32 | 0b08099a |
MD5 | 496D4DF453CF0774FDEC238CB47133FC |
SHA-2 | 10eafe015bceb28399d2da3b9dc8667097e72990c0768820c80ba623 |
2๏ธโฃ ํด์๊ฐ์ URL์ ๊ธธ์ด ๋งํผ๋ง ์ด์ฉ
CRC32 | 0b08099a |
MD5 | 496D4DF4 |
SHA-2 | 10eafe01 |
๐ค ์ด๋ ๊ฒ ํด์๊ฐ์ ์ผ๋ถ๋ง ์ฌ์ฉํ๋ฉด ์ถฉ๋์ด ๋ฐ์ํ ํ๋ฅ ์ด ๋์์ง์ง ์์๊น?
๐ก ์ถฉ๋์ด ๋ฐ์ํ๋ฉด, ์ถฉ๋์ด ํด์๋ ๋๊น์ง, ์ฌ์ ์ ์ ํ ๋ฌธ์์ด์ ํด์๊ฐ์ ๋ง๋ถ์ด๊ณ ๋ค์ ํด์ํจ์๋ฅผ ์ ์ฉ!
โ ์ด ๋ฐฉ๋ฒ์ ์ฐ๋ฉด Short URL์ ๋ง๋ค ๋ DB์ ํ๋ฒ ์ด์ ์ง์ ํด์ผ ํจ์ผ๋ก ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค! (๋ธ๋ฃธ ํํฐ๋ก ์ฑ๋ฅ ๊ฐ์ ๊ฐ๋ฅ)
โ๏ธ base-62 ๋ณํ๋ฒ
1๏ธโฃ ์๋ณธ url์ ๋ํ ์ ์ผ ์์ด๋๋ฅผ ์์ฑํ๋ค. (์ฑ ์์๋ ์ค๋ ธํ๋ ์ดํฌ ๋ฐฉ๋ฒ์ ์ฑํํ์ง๋ง, ์ฐ๋ฆฐ ๋ถ์ฐ ์์คํ ์ด ์๋๋ฏ๋ก auto_increment, UUID๋ฅผ ์ฌ์ฉํด๋ ๋ ๊ฒ ๊ฐ์)
2๏ธโฃ ์ด ID๋ฅผ 62์ง์๋ก ๋ณํํ๋ค.
3๏ธโฃ DB์ ID, ShortURL(ID์์ base-62๋ฅผ ์ ์ฉํ ๊ฐ), ์๋ณธURL์ ์ ์ฅํ๋ค.
URL ๋จ์ถ๊ธฐ ์ฒ๋ฆฌ ํ๋ฆ
โ๏ธ URL ๋จ์ถ ์์ฒญ
1๏ธโฃ ์ ๋ ฅ์ผ๋ก ๊ธด URL์ ๋ฐ๋๋ค.
2๏ธโฃ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํด๋น URL์ ๋์๋๋ ShortURL์ด ์๋์ง ๊ฒ์ฌํ๋ค.
3๏ธโฃ - 1๏ธโฃ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์๋ค๋ฉด, ๋์๋๋ ShortURL์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ค.
3๏ธโฃ - 2๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ค๋ฉด, URL ๋จ์ถ ๋ก์ง์ ์คํํ๊ณ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ์ ์ฅํ ๋ค ํด๋ผ์ด์ธํธ์๊ฒ ๋ฐํํ๋ค.
โ๏ธ ๋จ์ถ URL๋ก ์์ฒญ
1๏ธโฃ ์ ๋ ฅ์ผ๋ก ShortURL์ ๋ฐ๋๋ค.
2๏ธโฃ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์๋ณธ URL์ ์ฐพ์ ๋ฆฌ๋๋ ์ ํ๋ค.
โ ์ด ๊ณผ์ ์์ DB ์์ฒญ ํ์๋ฅผ ์ค์ด๊ธฐ ์ํด ์บ์๋ฅผ ์ฌ์ฉํ ์๋ ์์