- 언어 : JAVA (JDK 1.8)
- 프레임워크 : Spring boot 1.5.9 RELEASE, JPA & Hibernate
- 저장소 : MySQL
- 의존관리 : Maven 3.5.2
-
URL 입력 폼을 제공 한다.
-
단축 후 결과를 출력한다.
-
동일한 URL을 입력 할 경우 항상 동일한 shortening 결과 값이 나온다.
-
shortening 의 결과 값은 8문자 이내로 생성한다.
-
브라우저에서 shortening URL을 입력하면 원래 URL로 리다이렉트한다.
Generate shortening URL : within 8 charactors
- 1 번째 문자 : Protocol종류(HTTP : 1, HTTP : 2)
- 2 ~ 4 번째 문자 : schemes를 제외한 url의 base64 인코딩후 결과 출력되는 문자들 중 랜덤 3글자
- 5 ~ 7 번째 문자 : shortening URL을 요청받은 시점의 서버의 시스템 시간을 base64 인코딩한 결과 출력되는 문자들 중 랜덤 3글자
Base64인코딩을 사용한 이유 java API에 url safe한 인코딩을 지원해 줌
Base64표에서 (62:'+', 63:'/') -> (62:'-', 63:'_')로 url에서 safe하지 않은 문자를 바꿔 줌
Base64인코딩에 관련된 참고자료
http://effectivesquid.tistory.com/entry/Base64-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%9D%B4%EB%9E%80
- INPUT : https://github.com/gksxodnd007
- OUTPUT : http://localhost:8080/2xVwBB9
- INPUT : www.kakaopay.com
- OUPUT : 잘못된 URL입니다. 다시 입력해주세요
- test를 거치지 않고 실행하는 법
mvn spring-boot:run
- test후 실행 법
mvn clean install
- test로직은 UrlShorteningApplicationTests클래스의 메서드 주석을 참고
위의 명령어 빌드가 성공했다면 target폴더로 들어가 urlShortening.war를 실행한다.
java -jar urlShortening.war
- spring.datasource.url=jdbc:mysql://{ip}:{port}/{databaseName}?{parameterName}={value}...
- spring.datasource.username={userName}
- spring.datasource.password={password}