„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So erstellen Sie einen URL-Shortener von Grund auf

So erstellen Sie einen URL-Shortener von Grund auf

Veröffentlicht am 08.11.2024
Durchsuche:343

Anwendungen von Grund auf zu erstellen ist meine Lieblingsmethode, um zu lernen, wie sie funktionieren. In diesem Beitrag geht es darum, wie man einen URL-Shortener von Grund auf erstellt.

How to make a URL Shortener from scratch

Der

URL-Shortener ist extrem einfach zu erstellen und meiner Meinung nach eine großartige Möglichkeit, als Anfänger eine Sprache zu lernen. Der schwierigere Teil besteht darin, benutzerdefinierte Domänen, Analysen, Gruppierungslinks und andere Funktionen hinzuzufügen, die zusätzlich zum URL-Shortener-Dienst hinzugefügt werden. Hier erfahren Sie, wie Sie eines von Grund auf erstellen können.

In diesem Tutorial verwenden wir hono (nodejs), drizzle orm und postgres, aber es kann mit jeder Sprache und jedem Framework durchgeführt werden. Schauen Sie sich meine Sveltekit/Golang-Implementierung kon.sh an, Quellcode in Github.

Beginnen Sie mit der Erstellung eines neuen Hono-Projekts

npm create hono@latest

Dann geben Sie die folgenden Informationen ein

[email protected]
Ok to proceed? (y)
create-hono version 0.13.1
? Target directory url-shortener
? Which template do you want to use? nodejs
? Do you want to install project dependencies? yes
? Which package manager do you want to use? npm

Stellen Sie sicher, dass Ihre Postgres-Datenbank bereit ist, und erstellen Sie eine neue Datenbank namens URL-Shortener.

Im Ordner src/ sollte sich eine Datei index.ts befinden. Diese Datei enthält den Code zum Ausführen Ihres API-Servers. Hier müssen wir 2 API-Routen hinzufügen.

  • Shortener erstellen
  • Catch-All-Route zur Umleitung eingehender Anfragen

src/index.ts

app.post("/api/shortener", async (c) => {
    // create shortener route
    return c.text("Not yet implemented");
});

app.get("/:code", async (c) => {
    // redirect
    return c.text("Not yet implemented");
});

Jetzt können wir drizzle orm installieren und unsere Datenbank initialisieren. Installieren Sie zunächst die erforderlichen Pakete

npm i drizzle-orm postgres
npm i -D drizzle-kit

Dann müssen wir einen neuen DB-Ordner unter dem src-Ordner erstellen und index.ts zum Initialisieren des DB-Clients und schema.ts für das Datenbankschema hinzufügen.

src/db/schema.ts

import { pgTable, text, varchar } from "drizzle-orm/pg-core";

export const shortener = pgTable("shortener", {
    id: text("id").primaryKey(),
    link: varchar("link", { length: 255 }).notNull(),
    code: varchar("code", { length: 255 }).notNull().unique(),
});

src/db/index.ts

import { drizzle } from "drizzle-orm/postgres-js";
import postgres from "postgres";
import * as schema from "./schema";

const queryClient = postgres(
    "postgres://postgres:[email protected]:5432/url-shortener"
);
export const db = drizzle(queryClient, { schema });

Erstellen Sie dann eine drizzle.config.ts-Datei im Stammordner.

drizzle.config.ts

// drizzle.config.ts
import { defineConfig } from "drizzle-kit";

export default defineConfig({
    schema: "./src/db/schema.ts",
    out: "./drizzle",
    dialect: "postgresql",
    dbCredentials: {
        url: "postgres://postgres:[email protected]:5432/url-shortener",
    },
});

Führen Sie npx drizzle-kit push aus, um das Schema in die Datenbank zu übertragen.

npx drizzle-kit push

Nach all der Einrichtung können wir endlich an der API arbeiten, npm run dev ausführen, um den Server zu starten

npm run dev

Erstellen Sie zunächst einen Zufallsstringgenerator. Erstellen Sie unter src einen neuen Ordner mit dem Namen utils und erstellen Sie dann eine index.ts-Datei.

index.ts

export function generateId(length: number) {
    let result = "";
    const characters =
        "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    const charactersLength = characters.length;
    for (let i = 0; i 



Aktualisieren Sie dann die Route zum Erstellen eines Shorteners.

app.post("/api/shortener", async (c) => {
    const body = await c.req.json();

    const link = body.link;

    const code = generateId(6);

    await db.insert(shortener).values({
        id: generateId(8),
        link,
        code,
    });

    return c.json({ code });
});

Dann können Sie eine Post-Anfrage an den Endpunkt stellen, der den Link enthält, um einen neuen Shortener zu generieren. Hier ist ein Beispiel für die Verwendung des Thunder Client in meinem VSCode:
How to make a URL Shortener from scratch

Aktualisieren Sie abschließend die Weiterleitungs-API.

app.get("/:code", async (c) => {
    const code = c.req.param("code");

    const link = await db
        .select()
        .from(shortener)
        .where(eq(shortener.code, code));

    if (link.length === 0) {
        return c.text("Invalid code");
    }

    return c.redirect(link[0].link);
});

Navigieren Sie dann in Ihrem Browser zu http://localhost:3000/{code} und Sie werden zum ursprünglichen Link weitergeleitet.

Das ist es. Der URL-Shortener ist eine großartige Möglichkeit, mit dem Erlernen einer neuen Sprache zu beginnen. Sie können das beliebte Backend-Framework der Sprache verwenden und lernen, mit der Datenbank mit der Sprache zu kommunizieren.

Es gibt noch so viel mehr zu entdecken, wie z. B. das Generieren von QR-Code für Ihren Shortener, das Aufzeichnen von Weiterleitungen für Analysen, benutzerdefinierte Domänen und mehr. Diese werden in diesem Tutorial nicht behandelt.

Schauen Sie sich meinen Github an, um meine Arbeiten zu sehen. Alle meine Projekte sind Open Source und für jeden kostenlos zum Lernen und Mitwirken.

Ich bin auch offen für neue Ideen, auch wenn meine derzeitigen Fähigkeiten möglicherweise nicht dem Schwierigkeitsgrad entsprechen. Teile sie gerne in den Kommentaren.

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/tzgyn/how-to-make-a-url-shortener-from-scratch-ec5?1 Bei Verstößen wenden Sie sich zum Löschen bitte an [email protected] Es
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3