[スマイルゲートサーバキャンプ]2020,0114 Shortening Urlプロジェクト


Shortening URL項目


元のURLを与えると、BASE 62アルゴリズムで縮小したSHORT URLのサイトを作成し、実際のウィンドウにSHORT URLを入力すると、元のURLを再び指し、元のサイトに入ります.

アルゴリズム#アルゴリズム#

  • URLを入力すると、保存されたURLは
  • であり、各データベースのIDは1である.
  • ORIGIN URL(10進数)は62進数で、英語の小文字/大文字、0-9と略され、
  • を提供します.
  • のURLを入力と、データベースに既にURLが存在する場合は、そのURL情報を取得してアイデンティティー値を取得する、62進数でアイデンティティー値を算出して
  • を提供する.

    インプリメンテーション言語


    SPRING BOOT, VUE JS

    spring boot REST API - CONTROLLER



    -createShortUrl:Origin URLをフォームに入力すると、Short URLのAPIが作成されます
    -redirect:Short URLを入力すると、直接Origin UrlページのAPIに入ります.
  • getUrls:API
  • urlグラフィックのクエリーに使用

    URLの検証


    有効性の検証方法
    HttpURLLConnectionで実際のページにアクセスする形で検証
  • 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でspringbootプロジェクトにフロントエンド画面を追加し、
    ModelAndViewを使用してOrigin Urlのviewをフロート形式に変換します.

    ModelAndView


    コントローラが結果を処理した後、応答ビューとビューに送信する値を格納します.
  • ModelAndView(String 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);
    
        }
     

    スクリーンショット


    デフォルトの画面

    入力したURLフォーマットが無効です.