Intégrer l'API URLW en PHP : guide complet avec exemples de code
Comment intégrer l'API de raccourcissement d'URL URLW en PHP avec cURL. Code complet, gestion des erreurs et exemples pratiques pour vos applications PHP.
Vous développez en PHP et souhaitez intégrer la création de liens courts dans votre application ? L'API REST URLW est conçue pour être simple à utiliser depuis n'importe quel langage. Voici un guide complet pour intégrer URLW dans votre projet PHP, avec du code de production prêt à l'emploi.
Prérequis et configuration
Pour utiliser l'API URLW depuis PHP, vous avez besoin de :
- PHP 7.4 ou supérieur
- L'extension cURL activée (vérifiez avec
phpinfo()ouphp -m | grep curl) - Votre clé API URLW (disponible dans Paramètres → API de votre compte)
Commencez par stocker votre clé API de manière sécurisée, idéalement dans une variable d'environnement ou un fichier de configuration non versionné :
<?php
// Chargement depuis une variable d'environnement (recommandé)
$apiKey = getenv('URLW_API_KEY');
// Ou depuis un fichier de config (jamais dans le code versionné !)
// $apiKey = 'votre_cle_api_ici';
define('URLW_API_BASE', 'https://urlw.fr/api/v1');
Raccourcir une URL en PHP
Voici une fonction PHP complète pour créer un lien court via l'API URLW :
<?php
function urlwShorten(string $url, string $apiKey, string $slug = '', string $domain = ''): array
{
$payload = ['url' => $url];
if (!empty($slug)) {
$payload['slug'] = $slug;
}
if (!empty($domain)) {
$payload['domain'] = $domain;
}
$ch = curl_init(URLW_API_BASE . '/links');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Content-Type: application/json',
'Accept: application/json',
],
CURLOPT_TIMEOUT => 10,
CURLOPT_SSL_VERIFYPEER => true,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlError = curl_error($ch);
curl_close($ch);
if ($curlError) {
throw new \RuntimeException('Erreur cURL : ' . $curlError);
}
$data = json_decode($response, true);
if ($httpCode < 200 || $httpCode >= 300) {
$message = $data['message'] ?? 'Erreur inconnue';
throw new \RuntimeException("Erreur API URLW ({$httpCode}) : {$message}");
}
return $data;
}
// Utilisation
try {
$result = urlwShorten(
'https://exemple.com/ma-longue-page-produit?ref=newsletter',
getenv('URLW_API_KEY'),
'promo-ete',
'go.votre-marque.fr'
);
echo 'Lien court créé : ' . $result['short_url'] . PHP_EOL;
// Affiche : Lien court créé : https://go.votre-marque.fr/promo-ete
} catch (\RuntimeException $e) {
error_log('Erreur URLW : ' . $e->getMessage());
// Gérer l'erreur selon votre logique applicative
}
Récupérer les statistiques d'un lien
Pour afficher les statistiques de clic d'un lien dans votre application :
<?php
function urlwGetStats(string $linkId, string $apiKey): array
{
$ch = curl_init(URLW_API_BASE . '/links/' . urlencode($linkId) . '/stats');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $apiKey,
'Accept: application/json',
],
CURLOPT_TIMEOUT => 10,
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode !== 200) {
throw new \RuntimeException("Impossible de récupérer les stats (HTTP {$httpCode})");
}
return json_decode($response, true);
}
$stats = urlwGetStats('lnk_abc123', getenv('URLW_API_KEY'));
echo 'Clics totaux : ' . $stats['total_clicks'] . PHP_EOL;
echo 'Clics uniques : ' . $stats['unique_clicks'] . PHP_EOL;
Intégration dans un projet Symfony ou Laravel
Pour une intégration propre dans un projet Symfony ou Laravel, créez un service dédié :
- Symfony : créez une classe
UrlwClientcomme service avec injection duHttpClientInterface(composantsymfony/http-client). Déclarez votre clé API dansservices.yamldepuis une variable d'environnementURLW_API_KEY. - Laravel : créez un
UrlwServicedansapp/Services/et enregistrez-le dans le container IoC. Utilisezconfig('services.urlw.key')pour la clé.
Dans les deux cas, encapsulez la logique HTTP dans ce service et ne l'appelez jamais directement depuis vos contrôleurs. Cela facilite les tests unitaires avec des mocks.
Consultez la documentation complète de l'API URLW pour la liste exhaustive des endpoints et des paramètres. Commencez par créer votre compte URLW pour obtenir votre clé API.
Testez URLW gratuitement
50 liens courts, API REST incluse, aucune carte bancaire requise.