API plaque Node.js : fetch, async/await et variables serveur
Utilisez fetch natif dans Node.js pour consulter une plaque française et contrôler réseau, HTTP et JSON.
Publié le
Node.js peut appeler l’API plaque avec fetch natif et async/await. Le module ci-dessous garde les identifiants dans l’environnement, impose un délai et retourne uniquement l’objet de données véhicule après validation minimale.
Préparer l’exécution
Utilisez une version de Node.js maintenue disposant de fetch et de AbortSignal.timeout. Enregistrez le module en .mjs pour les modules ES. Injectez les variables dans le processus Node ; ne préfixez pas la clé avec NEXT_PUBLIC_ dans un projet Next.js.
Confirmez la base et le host dans votre console RapidAPI : le domaine en .p.rapidapi.co ci-dessous vient du catalogue et n’a pas été validé en production.
Module exécutable
# Configuration serveur uniquement. Confirmer URL et hôte dans RapidAPI.
RAPIDAPI_KEY=YOUR_RAPIDAPI_KEY
API_PLAQUE_BASE_URL=https://api-plaque-immatriculation-france-donnees-vehicule-siv.p.rapidapi.co
RAPIDAPI_HOST=api-plaque-immatriculation-france-donnees-vehicule-siv.p.rapidapi.co// Serveur uniquement : jamais dans un bundle envoyé au navigateur.
export async function lookupVehicle(plaque) {
const key = process.env.RAPIDAPI_KEY;
const base = process.env.API_PLAQUE_BASE_URL;
const host = process.env.RAPIDAPI_HOST;
if (!key || key === 'YOUR_RAPIDAPI_KEY' || !base || !host) {
throw new Error('Configuration RapidAPI manquante');
}
if (typeof plaque !== 'string' || !plaque.trim()) throw new Error('Plaque requise');
const url = new URL("/fr", base);
url.searchParams.set("plaque", plaque.trim());
const response = await fetch(url, {
method: "GET",
headers: {
'x-rapidapi-key': key,
'x-rapidapi-host': host,
'Content-Type': "application/json",
},
signal: AbortSignal.timeout(10000),
redirect: 'error',
cache: 'no-store',
});
if (!response.ok) throw new Error('Service véhicule indisponible (HTTP ' + response.status + ')');
const body = await response.json(); // Peut échouer si le corps n'est pas du JSON.
if (!body || body.error !== false || !body.data || typeof body.data !== 'object' || Array.isArray(body.data)) {
throw new Error('Réponse véhicule inexploitable');
}
return body.data;
}
try {
const vehicle = await lookupVehicle("FH034DD");
console.log(vehicle.AWN_marque ?? 'Marque indisponible');
} catch {
console.error('Identification indisponible. Vérifiez la configuration et réessayez plus tard.');
process.exitCode = 1;
}Résultat et comportement
Avec l’exemple de réponse publié, le champ de marque affiché serait RENAULT. Il s’agit d’une illustration, pas du résultat d’un appel effectué ici. Un autre véhicule peut fournir d’autres données ; votre code ne doit pas exiger tous les champs du catalogue.
Le bloc d’appel intercepte les exceptions réseau, de délai, HTTP et JSON. Dans une API web, transformez ces échecs en réponse applicative contrôlée et protégez la route contre l’utilisation anonyme de votre quota. Consultez le format JSON, les champs observés et les offres disponibles.
Référence technique : objets globaux de Node.js.