git clone https://github.com/poiu694/url-shortener
cd url-shortener
cd server && npm install && npm dev &
cd ../web && npm install && npm dev &
Open 'http://localhost:5173'
base62 알고리즘을 통해 줄여진 해시값이다. 7자의 크기를 갖을 수 있게 패딩을 넣어주었다.
ShortenURL에 들어가는 경우 리다이렉트할 URL이다.
id는 1부터 올라가면서 base62의 인코딩으로 들어가는 인풋이다.
주소를 줄이는 해시 알고리즘을 id를 통한 base62 사용. base64를 가면 url-safe(+, /) 하지 않으므로 base62를 통해 url-safe하게 바꿀 수 있다. 다른 해시 알고리즘을 사용하게 된다면 8자 이내의 결과값을 만족하기 어렵다고 판단했다.
해당 알고리즘을 통해 나오는 결과 값은 62^7의 크기를 사용할 수 있다.
처음에는 1 + random()되는 숫자를 생각해보긴 했으나 데이터의 양이 많을수록 id의 값이 너무 커질 수도 있다고 생각이 듦.
또한 random이 얼마나 커질 수 있는지에 따라 대용량으로 가면 갈수록, id를 저장할 수 있는 최대 크기에 빠르게 도달할 수도? autoIncrement를 제외하는 방법을 사용하게 된다면, 해싱 충돌을 막는 추가 연산을 넣어야 좋을 것 같다.
valid한 url을 확인하기 위해서 가볍게 http, https로 시작하는 등의 정규표현식을 거쳤다.
데이터가 많아졌을 경우에 대한 고려가 필요하다.(id, 성능 등)