楽しさと利益のためのURL短縮を構築!


これは楽しい完全なスタックプロジェクトWeeKnightプロジェクトであり、私はそれをやっている間、多くを学び、あなたとすべてのプロセスを共有するのが大好きだ!
任意のプロジェクトを起動すると、我々は我々の生産性を最大化し、無駄な時間を最小限に抑えるためにSDLCを介して作業を開始する必要があります.

ステージワン
Q:我々は何を構築しようとしていますか?
URL短縮.
Q :なぜですか?
A :楽しいプロジェクトです.

ステージツー
Q:人々が使う何か?
A :全く!そこにはたくさんありますが、これは私のものです.
Q:乱用の可能性?
A :はい、誤解を考慮しなければなりません.
Q :私は貨幣化を心配していますか?
A :そうではありません.

ステージスリー
我々のユーザーエクスペリエンス(UX)が我々のページの土地であるならば、我々が望むものについて考えましょう.これはシンプルで簡単にしたい

フロントエンド
非常にシンプルなGoogleのデザインのために行くと、デザインモックアップツールを使用してこのようなものに定住.


バックエンド
バックエンドは、このアプリケーションのワークホースです、それは2つの主要な仕事をしています.
  • 短縮リンク
  • Unshorten関連
  • def shorten(val):
        # Take a "long" value and return a "short" value
        pass
    
    def unshorten(val):
        # Take a "short" value and return its corresponding "long" value
        pass
    
    私たちのデータのすべてがデータベースに格納され、目的のために私はSQLiteを使用することを選んだが、この実装では、すべてのエントリの一意の主キーを持つことができる任意のデータベースがうまく動作します.別の方法を使用する場合は、自分でしています.我々の短いURLの目的のために、我々は有効な、非特別なキャラクタを持っているだけです;上位および小文字アルファベットA - Z、A - Zと数字0 - 9.これは私たちに62文字またはbase 62のキースペースを与えます我々のデータベースは、ちょうど数字、またはBase 10を使用します.
    クール!ヘビーリフト完了!
    long to short => base 10 -> base 62
    long to long => base 62 -> base 10
    from baseconvert import base
    
    def shorten(val):
        # Take a "long" value and return a "short" value
        return base(val, 10, 62, string=True)
    
    def unshorten(val):
        # Take a "short" value and return its corresponding "long" value
        return base(val, 62, 10, string=True)
    
    いくつかのAPIエンドポイントを追加する
    from flask import Flask
    import sqlite3
    
    app = Flask(__name__)
    db = sqlite3.connect('file.db')
    
    @app.route('/add', methods=['POST']):
    def add_url():
        # Add url to database & get ID
        row_id = db.add(url).lastrowid
        # shorten
        short_id = shorten(row_id)
        # return to user
        return short_id
    
    @app.route('/<string:shortURL>', methods=['GET']):
    def get_url(shortURL):
        # lengthen row id value (shortURL)
        row_id = unshorten(shortURL)
        # get url from database
        row = db.get(row_id)
        # return to user
        return row['url']
    
    我々は、いくつかのPsudocode書かれた私たちの大きな作品を持っている;これは、次のステージに移動する時間です!

    ステージフォー
    私のコードのパブリックレポはありませんが、実行中の実装をチェックしてください
    フロントエンドはNetLify、バックエンド&データベース上で無料でホストされている小さな滴にデジタルオーシャンでホストされています.
    セキュリティは、プロジェクトの実装中に念頭に置いておいた.recaptchaは、自動化されたショートカットを最小限に抑えるために使用され、もちろんこれはバックエンドだけでなく、フロントで検証されます.
    私が後の日付で加えたい機能は、ペイロードを供給するか、またはネットワークフィルタリング装置を迂回するためにこのサービスを使用しているどんな悪意のある俳優も軽減するVirustotalリンク評価です.
    https://bnon.xyz
    ステージ5 -テストと統合
    私は午後のテストをし、このアプリケーションを確保過ごした.これは本当に楽しいプロジェクトだったし、私はすべてのバグや脆弱性のレポートに受け入れている、常に何かを学ぶし、改善している.

    ステージシックス
    これまでのところ、私は私のリスト上のすべての項目とバグをノックダウンしました.私は何かミス?
    --
    ポストを楽しんだ?私に知らせて!💛🦄🔖