楽しさと利益のためのURL短縮を構築!
7445 ワード
これは楽しい完全なスタックプロジェクトWeeKnightプロジェクトであり、私はそれをやっている間、多くを学び、あなたとすべてのプロセスを共有するのが大好きだ!
任意のプロジェクトを起動すると、我々は我々の生産性を最大化し、無駄な時間を最小限に抑えるためにSDLCを介して作業を開始する必要があります.
ステージワン
Q:我々は何を構築しようとしていますか?
URL短縮.
Q :なぜですか?
A :楽しいプロジェクトです.
ステージツー
Q:人々が使う何か?
A :全く!そこにはたくさんありますが、これは私のものです.
Q:乱用の可能性?
A :はい、誤解を考慮しなければなりません.
Q :私は貨幣化を心配していますか?
A :そうではありません.
ステージスリー
我々のユーザーエクスペリエンス(UX)が我々のページの土地であるならば、我々が望むものについて考えましょう.これはシンプルで簡単にしたい
フロントエンド
非常にシンプルなGoogleのデザインのために行くと、デザインモックアップツールを使用してこのようなものに定住.
バックエンド
バックエンドは、このアプリケーションのワークホースです、それは2つの主要な仕事をしています.短縮リンク Unshorten関連
クール!ヘビーリフト完了!
long to short => base 10 -> base 62
long to long => base 62 -> base 10
ステージフォー
私のコードのパブリックレポはありませんが、実行中の実装をチェックしてください
フロントエンドはNetLify、バックエンド&データベース上で無料でホストされている小さな滴にデジタルオーシャンでホストされています.
セキュリティは、プロジェクトの実装中に念頭に置いておいた.recaptchaは、自動化されたショートカットを最小限に抑えるために使用され、もちろんこれはバックエンドだけでなく、フロントで検証されます.
私が後の日付で加えたい機能は、ペイロードを供給するか、またはネットワークフィルタリング装置を迂回するためにこのサービスを使用しているどんな悪意のある俳優も軽減するVirustotalリンク評価です.
https://bnon.xyz
ステージ5 -テストと統合
私は午後のテストをし、このアプリケーションを確保過ごした.これは本当に楽しいプロジェクトだったし、私はすべてのバグや脆弱性のレポートに受け入れている、常に何かを学ぶし、改善している.
ステージシックス
これまでのところ、私は私のリスト上のすべての項目とバグをノックダウンしました.私は何かミス?
--
ポストを楽しんだ?私に知らせて!💛🦄🔖
任意のプロジェクトを起動すると、我々は我々の生産性を最大化し、無駄な時間を最小限に抑えるためにSDLCを介して作業を開始する必要があります.
ステージワン
Q:我々は何を構築しようとしていますか?
URL短縮.
Q :なぜですか?
A :楽しいプロジェクトです.
ステージツー
Q:人々が使う何か?
A :全く!そこにはたくさんありますが、これは私のものです.
Q:乱用の可能性?
A :はい、誤解を考慮しなければなりません.
Q :私は貨幣化を心配していますか?
A :そうではありません.
ステージスリー
我々のユーザーエクスペリエンス(UX)が我々のページの土地であるならば、我々が望むものについて考えましょう.これはシンプルで簡単にしたい
フロントエンド
非常にシンプルなGoogleのデザインのために行くと、デザインモックアップツールを使用してこのようなものに定住.
バックエンド
バックエンドは、このアプリケーションのワークホースです、それは2つの主要な仕事をしています.
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 -テストと統合
私は午後のテストをし、このアプリケーションを確保過ごした.これは本当に楽しいプロジェクトだったし、私はすべてのバグや脆弱性のレポートに受け入れている、常に何かを学ぶし、改善している.
ステージシックス
これまでのところ、私は私のリスト上のすべての項目とバグをノックダウンしました.私は何かミス?
--
ポストを楽しんだ?私に知らせて!💛🦄🔖
Reference
この問題について(楽しさと利益のためのURL短縮を構築!), 我々は、より多くの情報をここで見つけました https://dev.to/0xbanana/building-a-url-shortener-for-fun-and-no-profit-28j1テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol