Integrar a API URLW em PHP: guia completo com exemplos de código
Como integrar a API de encurtamento de URL URLW em PHP com cURL. Código completo, gestão de erros e exemplos práticos para as suas aplicações PHP.
Está a desenvolver em PHP e pretende integrar a criação de links curtos na sua aplicação? A API REST URLW foi concebida para ser simples de utilizar a partir de qualquer linguagem. Eis um guia completo para integrar o URLW no seu projeto PHP, com código de produção pronto a utilizar.
Pré-requisitos e configuração
Para utilizar a API URLW a partir de PHP, precisa de:
- PHP 7.4 ou superior
- A extensão cURL ativada (verifique com
phpinfo()ouphp -m | grep curl) - A sua chave API URLW (disponível em Definições → API da sua conta)
Comece por armazenar a sua chave API de forma segura, idealmente numa variável de ambiente ou num ficheiro de configuração não versionado:
<?php
// Carregamento a partir de uma variável de ambiente (recomendado)
$apiKey = getenv('URLW_API_KEY');
// Ou a partir de um ficheiro de config (nunca no código versionado!)
// $apiKey = 'a_sua_chave_api_aqui';
define('URLW_API_BASE', 'https://urlw.fr/api/v1');
Encurtar um URL em PHP
Eis uma função PHP completa para criar um link curto via 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('Erro cURL: ' . $curlError);
}
$data = json_decode($response, true);
if ($httpCode < 200 || $httpCode >= 300) {
$message = $data['message'] ?? 'Erro desconhecido';
throw new \RuntimeException("Erro API URLW ({$httpCode}): {$message}");
}
return $data;
}
// Utilização
try {
$result = urlwShorten(
'https://exemplo.com/a-minha-longa-pagina-de-produto?ref=newsletter',
getenv('URLW_API_KEY'),
'promo-verao',
'go.a-sua-marca.fr'
);
echo 'Link curto criado: ' . $result['short_url'] . PHP_EOL;
// Exibe: Link curto criado: https://go.a-sua-marca.fr/promo-verao
} catch (\RuntimeException $e) {
error_log('Erro URLW: ' . $e->getMessage());
// Trate o erro de acordo com a sua lógica aplicacional
}
Recuperar as estatísticas de um link
Para exibir as estatísticas de cliques de um link na sua aplicação:
<?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("Impossível recuperar as estatísticas (HTTP {$httpCode})");
}
return json_decode($response, true);
}
$stats = urlwGetStats('lnk_abc123', getenv('URLW_API_KEY'));
echo 'Cliques totais: ' . $stats['total_clicks'] . PHP_EOL;
echo 'Cliques únicos: ' . $stats['unique_clicks'] . PHP_EOL;
Integração num projeto Symfony ou Laravel
Para uma integração limpa num projeto Symfony ou Laravel, crie um serviço dedicado:
- Symfony: crie uma classe
UrlwClientcomo serviço com injeção doHttpClientInterface(componentesymfony/http-client). Declare a sua chave API emservices.yamla partir de uma variável de ambienteURLW_API_KEY. - Laravel: crie um
UrlwServiceemapp/Services/e registe-o no container IoC. Utilizeconfig('services.urlw.key')para a chave.
Em ambos os casos, encapsule a lógica HTTP neste serviço e nunca a chame diretamente a partir dos seus controladores. Isso facilita os testes unitários com mocks.
Consulte a documentação completa da API URLW para a lista exaustiva de endpoints e parâmetros. Comece por criar a sua conta URLW para obter a sua chave API.
Experimente o URLW gratuitamente
50 links curtos, API REST incluída, sem cartão de crédito necessário.