Spis treści:
Jak zbudować bezpieczny i krótki skracacz adresów URL w Node.js za pomocą NestJS
Wprowadzenie
Skracacze adresów URL stały się niezbędnym narzędziem w dzisiejszej erze cyfrowej, pozwalając na skrócenie długich i nieporęcznych adresów internetowych, aby uczynić je bardziej przejrzystymi i łatwiejszymi do udostępniania. Jednak zapewnienie bezpieczeństwa i ochrony podczas tworzenia skróconych adresów URL jest kluczowe. W tym artykule przeprowadzimy Cię przez proces budowania bezpiecznego skracacza adresów URL za pomocą Node.js i frameworka NestJS, krok po kroku wyjaśniając koncepcje i implementacje.
Zastosowania skracaczy adresów URL
Skracacze adresów URL znajdują szerokie zastosowanie w różnych dziedzinach, m.in.:
– Media społecznościowe: Twitter, Instagram i inne platformy mediów społecznościowych mają ograniczenia długości treści, co sprawia, że skracacze adresów URL są niezbędne do udostępniania długich adresów internetowych.
– Kampanie marketingowe: Skracacze adresów URL umożliwiają łatwe śledzenie i analizowanie kliknięć w kampaniach marketingowych i e-mailowych.
– Branża e-commerce: Skrócone adresy URL mogą być wykorzystywane do tworzenia łatwych do zapamiętania kodów rabatowych i linków afiliacyjnych.
– Udostępnianie dokumentów: Skracacze adresów URL mogą być wygodnym sposobem na udostępnianie długich adresów internetowych do dokumentów, prezentacji i plików PDF.
Framework NestJS
NestJS to nowoczesny framework do tworzenia aplikacji Node.js, który promuje architekturę zorientowaną na obiekty (OOP) i wykorzystuje wzorce projektowe takie jak inwersja kontroli (IoC) i wstrzykiwanie zależności. Zapewnia kompleksowy zestaw narzędzi do tworzenia skalowalnych, łatwych w utrzymaniu i testowalnych aplikacji Backendowych.
Tworzenie skracacza adresów URL z NestJS
1. Konfiguracja projektu
Przejdź do wiersza poleceń i stwórz nowy projekt NestJS za pomocą następującego polecenia:
bash
nest new short-url-service
Zmień katalog na nowo utworzony projekt:
bash
cd short-url-service
2. Instalacja zależności
Zainstaluj niezbędne zależności dla skracacza adresów URL:
bash
npm i --save shortid
npm i --save-dev @types/shortid
Biblioteka shortid
będzie generować unikalne i krótkie identyfikatory dla skróconych adresów URL.
3. Model URL
Utwórz model Url
w katalogu src/url/url.entity.ts
:
typescript
import { Entity, Column, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Url {
@PrimaryGeneratedColumn('uuid')
id: string;
@Column({ unique: true })
shortId: string;
@Column()
originalUrl: string;
}
Ten model reprezentuje skrócony adres URL, gdzie id
jest unikalnym identyfikatorem, shortId
to skrócony adres URL, a originalUrl
to oryginalny długi adres URL.
4. Kontroler URL
Utwórz kontroler UrlController
w katalogu src/url/url.controller.ts
:
typescript
import { Body, Controller, Get, Param, Post } from '@nestjs/common';
import { Url } from './url.entity';
import { UrlService } from './url.service';
@Controller('url')
export class UrlController {
constructor(private readonly urlService: UrlService) {}
@Post()
async create(@Body() body: Url) {
return await this.urlService.create(body.originalUrl);
}
@Get(':shortId')
async find(@Param('shortId') shortId: string) {
return await this.urlService.find(shortId);
}
}
Ten kontroler definiuje punkt końcowy do tworzenia skróconych adresów URL (POST /url
) oraz punkt końcowy do znajdowania oryginalnych adresów URL na podstawie skróconego identyfikatora (GET /url/:shortId
).
5. Usługa URL
Utwórz usługę UrlService
w katalogu src/url/url.service.ts
:
typescript
import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { Url } from './url.entity';
import * as shortId from 'shortid';
@Injectable()
export class UrlService {
constructor(
@InjectRepository(Url)
private readonly urlRepository: Repository<Url>,
) {}
async create(originalUrl: string): Promise<Url> {
const shortId = shortId.generate();
const url = new Url();
url.shortId = shortId;
url.originalUrl = originalUrl;
return await this.urlRepository.save(url);
}
async find(shortId: string): Promise<Url | null> {
return await this.urlRepository.findOne({ shortId });
}
}
Ta usługa zawiera logikę biznesową do tworzenia i wyszukiwania skróconych adresów URL. Wykorzystuje bibliotekę shortid
do generowania skróconych identyfikatorów.
6. Testowanie skracacza adresów URL
Uruchom aplikację NestJS za pomocą następującego polecenia:
bash
npm start
Przejdź do adresu http://localhost:3000/url
w przeglądarce. Możesz użyć dowolnego narzędzia (np. Postman), aby wykonać żądanie POST z ciałem JSON zawierającym pole originalUrl
o dowolnym długim adresie URL.
Po wykonaniu żądania otrzymasz odpowiedź zawierającą obiekt Url
ze skróconym identyfikatorem. Możesz użyć tego skróconego identyfikatora z adresem http://localhost:3000/url/
(np. http://localhost:3000/url/V79m
), aby przekierować do oryginalnego adresu URL.
Wnioski
W tym artykule przedstawiliśmy szczegółowy przewodnik dotyczący tworzenia bezpiecznego i krótkiego skracacza adresów URL za pomocą Node.js i NestJS. Ten skracacz adresów URL zapewnia ochronę przed próbami podszywania się, wykorzystując unikalne identyfikatory i ograniczając możliwość manipulowania oryginalnym adresem URL. Wykorzystując framework NestJS, stworzyliśmy dobrze zorganizowany i testowalny projekt, który można łatwo rozszerzać i dostosowywać do własnych potrzeb.
Często zadawane pytania
1. Czy ten skracacz adresów URL jest odporny na ataki przeciążenia licznika?
Tak, ponieważ generuje unikalne identyfikatory za pomocą biblioteki shortid
, która zapewnia ochronę przed przeciążeniem licznika.
2. Czy skrócone adresy URL są trwałe?
Tak, skrócone adresy URL są trwałe, dopóki odpowiedni oryginalny adres URL istnieje w bazie danych.
3. Czy mogę dostosować sposób generowania identyfikatorów skróconych adresów URL?
Tak, możesz dostosować algorytm generowania identyfikatorów, zmieniając bibliotekę generatora identyfikatorów.
4. Jak mogę ograniczyć liczbę skróconych adresów URL tworzonych przez jednego użytkownika?
Możesz dodać mechanizm ograniczania dostępu, kontrolując liczbę skróconych adresów URL tworzonych przez określony adres IP lub adres e-mail.
5. Czy mogę zintegrować ten skracacz adresów URL z innymi systemami?
Tak, ten skracacz adresów URL jest przeznaczony do łatwej integracji z innymi systemami za pomocą punktów końcowych REST API.
6. Jak mogę dodać śledzenie kliknięć i analitykę do skracacza adresów URL?
Możesz dodać tabelę śledzenia kliknięć do bazy danych i aktualizować liczbę kliknięć za każdym razem, gdy ktoś kliknie skrócony adres URL.
7. Czy ten skracacz adresów URL może być wykorzystany do celów komercyjnych?
Tak, ten skracacz adresów URL jest przeznaczony do użytku zarówno osobistego, jak i komercyjnego.
8. Jak mogę zabezpieczyć skracacz adresów URL przed złośliwym oprogramowaniem lub złośliwymi adresami URL?
Możesz zintegrow