Típusbiztos URL-rövidítő létrehozása NodeJS-ben NestJS-sel

Típusbiztos URL-rövidítő létrehozása NodeJS-ben NestJS-sel

Bevezetés

A rövid URL-címek elengedhetetlen eszközök a hosszú és bonyolult URL-címek egyszerűsítése és megosztása érdekében. Azonban a hagyományos URL-rövidítő szolgáltatások, mint például a Bitly és a TinyURL, nem mindig megbízhatóak, és reklámokat vagy rosszindulatú programokat szúrhatnak be a rövidített URL-ekbe.

  A nem reagáló Chromebook-alkalmazások bezárása

Ezért szükség van típusbiztos, megbízható és testreszabható URL-rövidítő megoldásokra. A NestJS egy népszerű NodeJS keretrendszer, amely kiváló alapot biztosít a típusbiztos és skaláris alkalmazások létrehozásához. Ebben a cikkben végigvezetjük Önt, hogyan hozhat létre egy típusbiztos URL-rövidítőt NestJS-sel.

Megvalósítás

1. Projekt létrehozása és beállítása

Kezdje azzal, hogy létrehoz egy új NestJS projektet az alábbi paranccsal:

bash
nest new my-url-shortener

A projekt létrehozása után telepítse a szükséges csomagokat:

bash
npm install --save uuid

2. URL rövidítő modul létrehozása

Létrehozunk egy urlShortener modult, amely a rövidítő logikát fogja tartalmazni. Hozzon létre egy url-shortener.module.ts fájlt a src könyvtárban, és adja hozzá a következő kódot:

typescript
import { Module } from '@nestjs/common';
import { UrlShortenerService } from './url-shortener.service';
import { UrlShortenerController } from './url-shortener.controller';

@Module({
providers: [UrlShortenerService],
controllers: [UrlShortenerController],
})
export class UrlShortenerModule {}

3. URL rövidítő szolgáltatás létrehozása

A url-shortener.service.ts fájlban hozzon létre egy UrlShortenerService osztályt:

typescript
import { Injectable } from '@nestjs/common';
import { v4 as uuid } from 'uuid';

@Injectable()
export class UrlShortenerService {
private readonly shortUrls = new Map<string, string>();

shortenUrl(originalUrl: string): string {
const shortUrl = uuid();
this.shortUrls.set(shortUrl, originalUrl);
return shortUrl;
}

getOriginalUrl(shortUrl: string): string | undefined {
return this.shortUrls.get(shortUrl);
}
}

4. URL rövidítő vezérlő létrehozása

A url-shortener.controller.ts fájlban hozzon létre egy UrlShortenerController osztályt:

typescript
import { Controller, Get, Post, Param, Body } from '@nestjs/common';
import { UrlShortenerService } from './url-shortener.service';

@Controller('api/url-shortener')
export class UrlShortenerController {
constructor(private readonly urlShortenerService: UrlShortenerService) {}

@Post()
shortenUrl(@Body('originalUrl') originalUrl: string): string {
return this.urlShortenerService.shortenUrl(originalUrl);
}

@Get('/:shortUrl')
getOriginalUrl(@Param('shortUrl') shortUrl: string): string | undefined {
return this.urlShortenerService.getOriginalUrl(shortUrl);
}
}

5. App modul módosítása

A main.ts fájlban importálja a UrlShortenerModule modult és adja hozzá a imports tömbhöz:

typescript
import { UrlShortenerModule } from './url-shortener/url-shortener.module';

@Module({
imports: [UrlShortenerModule],
})
export class AppModule {}

6. Alkalmazás futtatása

Futassa az alkalmazást a következő paranccsal:

bash
npm run start

Az alkalmazás most a 3000-es porton fog futni.

Konfiguráció

Az alkalmazás konfigurálható a .env fájlban. Hozzon létre egy .env fájlt a projekt gyökérkönyvtárában, és adja hozzá a következőket:


URL_SHORTENER_BASE_URL=http://localhost:3000

Ez a beállítás határozza meg a rövidített URL-ek alapcímét.

Használat

URL rövidítése

Ehhez tegyen egy POST kérést az /api/url-shortener végpontra, és adja meg az eredeti URL-t a body-ban:

json
{
"originalUrl": "https://example.com"
}

A válasz egy rövidített URL lesz:

json
"http://localhost:3000/23kjn4"

Eredeti URL lekérése

Ehhez tegyen egy GET kérést az /api/url-shortener/{shortUrl} végpontra, ahol a {shortUrl} a rövidített URL:

json
"https://example.com"

Következtetés

Ebben a cikkben megtanultuk, hogyan hozzunk létre egy típusbiztos URL-rövidítőt NestJS-sel. Ezt a megoldást különféle alkalmazásokban használhatja, például link rövidítésre, URL-ek nyomon követésére és egyéni címsor létrehozására. A NestJS típusbiztos rendszere biztosítja az alkalmazás megbízhatóságát és karbantarthatóságát.

Gyakran Ismételt Kérdések (GYIK)

1. Mi a különbség a hagyományos URL-rövidítő szolgáltatások és a saját URL-rövidítő megoldásom között?

A hagyományos URL-rövidítő szolgáltatások gyakran reklámokat és rosszindulatú programokat szúrnak be a rövidített URL-ekbe. A saját URL-rövidítő megoldásod teljes mértékben az irányításod alatt áll, így biztos lehetsz benne, hogy a rövidített URL-ek biztonságosak és megbízhatóak.

2. Használhatom ezt az URL-rövidítőt nagy forgalmú alkalmazásokhoz?

Igen, ez az URL-rövidítő úgy lett megtervezve, hogy kezelje a nagy forgalmú alkalmazásokat. A NestJS keretrendszer skálázható és megbízható, így biztos lehetsz benne, hogy az alkalmazásod sokáig fog működni.

3. Hogyan tudom testreszabni a rövidített URL-eket?

A rövidített URL-ek testreszabhatók a .env fájlban található URL_SHORTENER_BASE_URL beállítással. Ez lehetővé teszi, hogy a rövidített URL-ekhez egyéni domaint használj.

4. Támogatja ez az URL-rövidítő a régiók és országok geolokációját?

Jelenleg ez az URL-rövidítő nem támogatja a régiók és országok geolokációját.

5. Van lehetőség a rövidített URL-ek nyomon követésére?

Jelenleg ez az URL-rövidítő nem támogatja a rövidített URL-ek nyomon követését.

6. Támogatja-e ez az URL-rövidítő a több felhasználós hozzáférést?

Jelenleg ez az URL-rövidítő nem támogatja a több felhasználós hozzáférést.

7. Van-e mód arra, hogy egyedi lejáratokat állítsak be a rövidített URL-ekhez?

Jelenleg ez az URL-rövidítő nem támogatja a rövidített URL-ek egyedi lejáratának beállítását.

8. Léteznek-e más csomagok, amelyek használatával javíthatom ezt az URL-rövidítő megoldást?

Igen, itt van néhány csomag, amelyet használhatsz:

node-url-shortener
short-uuid
nanoid