POST /api/v1/data/shorten
{longUrl: longUrlString}
GET /api/v1/shortUrl
Location
헤더에 담아 301 응답을 보낸다.Location
헤더에 반환된 URL로 이전되었다는 응답Location
헤더 URL로 처리되어야 한다는 응답www.tinyurl.com/{hashValue}
라고 하면 긴 URL을 이 해시 값으로 대응시킬 해시 함수 fx가 필요hashValue
는 [0-9, a-z, A-Z]
의 문자로 구성되므로 사용 가능 문자 개수는 62해시 충돌 두 접근법 비교
해시 후 충돌 해소 전략 | base-64 변환 |
---|---|
단축 URL의 길이가 고정됨 | 단축 URL 길이가 가변적. ID 값이 커지면 같이 커짐 |
유일성 보장 ID 생성기가 필요치 않음 | 유일성 보장 ID 생성기 필요 |
충돌이 가능해서 해소 전략이 필요 | ID 유일성이 보장된 후에야 적용 가능한 전략이라 충돌이 아예 불가능 |
ID로부터 단축 URL을 계산하는 방식이 아니라 다음에 쓸 수 있는 URL을 알아내는 것이 불가능 | ID가 1씩 증가한다 가정하면 다음 단축 URL이 무엇인지 알아낼 수 있어 보안 문제가 될 소지가 있음 |
추가적으로 논의해 볼만한 것