Node.js-url-Modul

Java FileNode.js integrierte Module


In Node.js, dasurlDas Modul ist ein integriertes Modul, das zum Verarbeiten und Parsen von URLs (Uniform Resource Locators) verwendet wird. Es bietet eine Reihe von Hilfsmethoden, um URL-Zeichenfolgen einfach zu parsen, zu formatieren und zu verarbeiten.

URL (Uniform Resource Locator) ist eine Adresse im Internet, mit der Ressourcen identifiziert und lokalisiert werden, zum Beispiel:

https://www.example.com:8080/path/to/resource?query=string#hash

Kernmethoden

url.parse()-Methode

url.parse()Diese Methode wird verwendet, um eine URL-Zeichenfolge in ein URL-Objekt zu parsen.

Beispiel

const url = require('url');

const urlString = 'https://www.example.com:8080/path/to/resource?query=string#hash';
const parsedUrl = url.parse(urlString);

console.log(parsedUrl);

Die Ausgabe enthält die folgenden Eigenschaften:

  • protocol: Protokoll (z. B. 'https:')
  • host: Hostname und Port (z. B. 'www.example.com:8080')
  • hostname: Hostname (z. B. 'www.example.com')
  • port: Portnummer (z. B. '8080')
  • pathname: Pfadteil (z. B. '/path/to/resource')
  • query: Abfragezeichenfolge (z. B. 'query=string')
  • hash: Fragmentbezeichner (z. B. '#hash')

url.format()-Methode

url.format()Die Methode, im Gegensatz zuparse()Umgekehrt wandelt sie ein URL-Objekt in eine String-Form um.

Beispiel

const url = require('url');

const urlObject = {
  protocol: 'https:',
  host: 'www.example.com:8080',
  pathname: '/path/to/resource',
  query: { query: 'string' },
  hash: '#hash'
};

const formattedUrl = url.format(urlObject);
console.log(formattedUrl);
// Ausgabe: https://www.example.com:8080/path/to/resource?query=string#hash

url.resolve()-Methode

url.resolve()Diese Methode wird verwendet, um eine Ziel-URL relativ zu einer Basis-URL aufzulösen.

Beispiel

const url = require('url');

const baseUrl = 'https://www.example.com/path/';
const relativeUrl = 'to/resource';

const resolvedUrl = url.resolve(baseUrl, relativeUrl);
console.log(resolvedUrl);
// Ausgabe: https://www.example.com/path/to/resource

Struktur des URL-Objekts

Ein vollständiges URL-Objekt enthält normalerweise die folgenden Eigenschaften:

  1. Protokoll (protocol)- wie 'http:' oder 'https:'
  2. Authentifizierungsinformationen (auth)- enthält Benutzername und Passwort
  3. Host (host)- Hostname und Portnummer
  4. Hostname (hostname)- nur Hostname
  5. Port (port)- Portnummer
  6. Pfad (pathname)- Ressourcenpfad
  7. Abfragezeichenfolge (search)- Abfragezeichenfolge beginnend mit '?'
  8. Abfrageparameter (query)- das geparste Ergebnis der Abfragezeichenfolge
  9. Fragmentbezeichner (hash)- Fragmentbezeichner beginnend mit '#'

Neue URL-API

Node.js stellt außerdem eine neue API bereit, die auf dem WHATWG-URL-Standard basiert:

URL-Klasse

Beispiel

const { URL } = require('url');

const myUrl = new URL('https://www.example.com:8080/path/to/resource?query=string#hash');

console.log(myUrl.protocol); // 'https:'
console.log(myUrl.hostname); // 'www.example.com'
console.log(myUrl.port);     // '8080'
console.log(myUrl.pathname); // '/path/to/resource'
console.log(myUrl.search);   // '?query=string'
console.log(myUrl.hash);     // '#hash'

URLSearchParams-Klasse

URLSearchParamsBietet praktische Methoden für den Umgang mit Query-Strings:

Beispiel

const { URL, URLSearchParams } = require('url');

const myUrl = new URL('https://example.com/?name=John&age=30');
const params = new URLSearchParams(myUrl.search);

// Parameter abrufen
console.log(params.get('name')); // 'John'
console.log(params.get('age'));  // '30'

// Parameter hinzufügen
params.append('city', 'New York');

// Parameter löschen
params.delete('age');

// In String umwandeln
console.log(params.toString()); // 'name=John&city=New+York'

Praktische Anwendungsszenarien

1. Parsen von Anfrage-URLs

Die URL einer Client-Anfrage in einem HTTP-Server parsen:

Beispiel

const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, wahr);
 
  console.log('Pfad:', parsedUrl.pathname);
  console.log('Abfrage:', parsedUrl.query);
 
  res.end('URL erfolgreich geparst');
});

server.listen(3000);

2. API-Endpunkte erstellen

Verwenden Sie das URL-Modul, um RESTful-API-Endpunkte zu erstellen:

Beispiel

const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, wahr);
  const path = parsedUrl.pathname;
 
  if (path === '/api/users') {
    // Benutzerbezogene Anfragen bearbeiten
    res.end(JSON.stringify({ users: ['John', 'Jane'] }));
  } else if (path === '/api/products') {
    // Produktbezogene Anfragen bearbeiten
    res.end(JSON.stringify({ products: ['Phone', 'Laptop'] }));
  } else {
    res.statusCode = 404;
    res.end('Nicht gefunden');
  }
});

server.listen(3000);

3. Umgang mit Query-Parametern

Beispiel

const http = require('http');
const url = require('url');

const server = http.createServer((req, res) => {
  const parsedUrl = url.parse(req.url, wahr);
  const query = parsedUrl.query;
 
  if (parsedUrl.pathname === '/search') {
    const keyword = query.q || '';
    const page = parseInt(query.page) || 1;
   
    res.end(`Suche nach "${keyword}" auf Seite ${page}`);
  }
});

server.listen(3000);

Best Practices

  1. URLs immer validieren- Bei der Verarbeitung von benutzerbereitgestellten URLs immer deren Gültigkeit überprüfen
  2. Die neue API verwenden- Bevorzugen Sie die WHATWG URL API, da sie besser zu modernen Standards passt
  3. Ausnahmen behandeln- Verwenden Sie try-catch, um Fehler zu behandeln, die während des URL-Parsings auftreten können
  4. Sonderzeichen codieren- Verwenden SieencodeURIComponent()um Sonderzeichen in Abfrageparametern zu codieren
  5. Sicherheitsüberlegungen- Validieren Sie beim Umgang mit Weiterleitungen die Ziel-URL, um Open-Redirect-Schwachstellen zu verhindern

Beispiel

// Sicherheitsbeispiel: Validieren Sie die Weiterleitungs-URL
function isValidRedirect(url) {
  const allowedDomains = ['example.com', 'trusted-site.com'];
  const parsedUrl = new URL(url);
  return allowedDomains.includes(parsedUrl.hostname);
}

Wenn Sie das Node.js-urlModul, mit dem Sie problemlos verschiedene URL-bezogene Operationen ausführen und robustere und sicherere Webanwendungen erstellen können.

Java FileNode.js integrierte Module

Weitere Erweiterungen