2

私のクライアントには、400,000 を超える顧客のデータベースがあります。各顧客には GUID が割り当てられます。彼は、すべてのレコードを選択して、この GUID をパラメーターとして含む動的な「短い URL」を作成するように求めています。次に、この短い URL を各クライアント レコードのフィールドに保存します。

最初の質問は、URL 短縮サイトで、このようにプログラムでその場で短い URL を作成できるものはありますか?

4

4 に答える 4

3

TinyUrl を使用すると、それを行うことができます (広く文書化されていません)。たとえば、次のようになります。

http://tinyurl.com/api-create.php?url=http://www.stackoverflow.com/

http://tinyurl.com/6fqmtuになります

だから、あなたが持つことができます

http://tinyurl.com/api-create.php?url=http://mysite.com/user/xxxx-xxxx-xxxx-xxxx

http://tinyurl.com/64dva66へ。

GUID はそれほど明確ではありませんが、URL は一意である必要があります

これを HTTPWebRequest に渡して応答を取得する必要があることに注意してください。

于 2011-03-17T22:12:33.253 に答える
1

この URL は十分に短くありません:?

http://www.clientsdomain.com/?customer=267E7DDD-8D01-4F38-A3D8-DCBAA2179609

注: 個人的には、クライアントが奇妙なことを求めていると思います。各顧客レコードに URL フィールドを作成するように依頼することで (これは、決定論的アルゴリズムを介して顧客の GUID に基づいています)、実際には、データベースを非正規化するように依頼しています。

于 2011-03-17T22:09:44.290 に答える
1

URL 短縮サイトが使用するアルゴリズムは非常に単純です。

  1. URL を保存し、それをそのシーケンス番号にマップします。
  2. シーケンス番号 (id) を固定長文字列に変換します。

2 番目のステップで 6 つの小文字を使用するだけで、現在のアプリケーションが必要とするより多く (24^6) の組み合わせが得られ、ある時点でより大きなシーケンスの使用を妨げるものは何もありません。数字や大文字を使用できる場合は、短いシーケンスを使用できます。

変換のアルゴリズムは、基数変換 (16 進数に変換する場合と同様) であり、ゼロを表す記号でパディングします。これは、変換のための Python コードです。

LOWER = [chr(x + ord('a')) for x in range(25)]
DIGITS = [chr(x + ord('0')) for x in range(10)]
MAP = DIGITS + LOWER

def i2text(i, l):
        n = len(MAP)
        result = ''
        while i != 0:
                c = i % n
                result += MAP[c]
                i //= n
        padding = MAP[0]*l
        return (padding+result)[-l:]

print i2text(0,4)
print i2text(1,4)
print i2text(12,4)
print i2text(36,4)
print i2text(400000,4)
print i2text(1600000,4)

結果:

0000
0001
000c
0011
kib9
4b21

URL はhttp://mydomain.com/myapp/short/kib9の形式になります。

于 2011-03-17T22:14:38.317 に答える
1

Google の短縮 URL を使用できます。Google には API があります。

そのためのドキュメントは次のとおりです。http://code.google.com/apis/urlshortener/v1/getting_started.html

于 2011-03-17T22:05:15.253 に答える