[스마일게이트 서버캠프] 20200114 Shortening Url 프로젝트

Dayeon myeong·2021년 1월 30일
0

합격하소서

목록 보기
4/7

Shortening URL 프로젝트

원래의 URL을 주면 BASE 62 알고리즘을 통해 줄여진 SHORT URL을 만들어주는 사이트를 만들어보고, 실제 창에 SHORT URL을 입력하면 원래의 URL 로 리다이렉트되어 원래의 사이트로 들어가도록 한다.

알고리즘

  1. URL을 입력하면 DB에 1씩 증가는 숫자를 아이디로 가지는 url을 저장
  2. ORIGIN URL(10진수)를 62진법을 활용하여 영문소문자/대문자, 숫자0-9로 이루어진 short URL로 줄여 제공
  3. URL을 입력했을 때 DB에 이미 있는 URL이면 해당 URL 정보를 가져와 아이디 값을 얻고, 아이디 값을 62진법으로 계산하여 제공

구현 언어

SPRING BOOT, VUE JS

spring boot REST API - CONTROLLER

URL

-createShortUrl : Origin URL을 폼에 입력하면 Short URL을 만들어주는 API
-redirect : Short URL을 입력하면 원래의 Origin URL로 리다이렉트 Origin Url 페이지로 들어가는 API

  • getUrls : url 그래프를 조회하기 위한 API

URL 유효성 검증

유효성 검증을 어떻게 해야 고민하다
HttpURLConnection을 통해 실제 페이지에 엑세스하는 형식으로 유효성 검증

    • java.net.HttpURLConnection 클래스는 URLConnection을 구현한 클래스 (java.net 클래스에서 제공하는 URL 요청을 위한 클래스)

public class UrlTypeValidation implements Validation {

    @Override
    public boolean valid(String url) {
        try {
            URL connectionUrl = new URL("http://"+url);
            HttpURLConnection con = (HttpURLConnection) connectionUrl.openConnection();
            BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
            String inputLine;

            while ((inputLine = br.readLine()) != null)

                System.out.println(inputLine);

            br.close();



        } catch (Exception e) {
            return false;
        }

        return true;

    }
}

리다이렉트

spring boot + vue.js로 spring boot 프로젝트에 프론트 엔드 화면을 붙이다보니
설정이 꼬이게 되어 방법을 찾다 ModelAndView를 사용하여 Origin Url의 view를 띄우는 형식으로 활용하였다.

ModelAndView

Controller 처리 결과 후 응답할 view와 view에 전달할 값을 저장

  • ModelAndView(String viewName) : 응답할 view 설정

    @GetMapping("/{shortUrl}")
    public ModelAndView redirect(HttpServletRequest httpServletRequest, 
        HttpServletResponse httpServletResponse, @PathVariable("shortUrl") String shortUrl) throws IOException {

        final String url = urlService.getUrlByShortUrl(shortUrl);


        if(url.contains("redirect")){
            String redirectUrl = url;
        }


        return new ModelAndView(url);

    }
 

스크린샷

기본 화면
URL1캡쳐

유효하지 않은 URL 형식을 입력했을 때
URL2캡쳐

URL3캡쳐

profile
부족함을 당당히 마주하는 용기

0개의 댓글