No te compliques demasiado: Delphi 2005 sí puede trabajar con APIs REST, aunque sea antiguo.
La clave es entender que una API normalmente es simplemente:
- hacer peticiones HTTP (GET, POST, PUT, DELETE…)
- enviar/recibir JSON
- gestionar autenticación (tokens, API keys, JWT, etc.)
Indy sirve perfectamente para eso y en Delphi 2005 será de lo más habitual.
Por ejemplo:
- TIdHTTP → para hacer las peticiones
- TStringStream → para enviar JSON en POST
- alguna librería JSON compatible con D2005 → para parsear respuestas
El problema normalmente no es el GET, sino el POST:
- headers incorrectos
- Content-Type
- codificación UTF-8
- SSL/TLS moderno
- formato JSON mal enviado
Ejemplo muy básico de POST con Indy:
Código Delphi
[-]
uses IdHTTP, Classes;
var Http: TIdHTTP;
Datos: TStringStream;
Respuesta: string;
begin
Http := TIdHTTP.Create(nil);
Datos := TStringStream.Create('{"usuario":"test"}');
try
Http.Request.ContentType := 'application/json';
Respuesta := Http.Post( 'https://api.midominio.com/login', Datos );
ShowMessage(Respuesta);
finally
Datos.Free;
Http.Free;
end;
end;
Luego ya vienen las complicaciones reales:
- HTTPS moderno (TLS 1.2)
- tokens Bearer
- certificados
- OAuth
- compresión gzip
- parseo JSON
Ahí es donde Delphi 2005 empieza a sufrir por antiguo.
Si vais a hacer muchas aplicaciones de escritorio conectadas a vuestra web, quizá os compense:
- usar una API REST bien definida
- migrar a una versión más moderna de Delphi
- o usar una librería REST ya preparada
Porque hoy en día casi todo funciona con JSON + HTTPS + JWT y Delphi 2005 no nació pensando en eso.
Mi consejo:
- primero consigue hacer un GET simple a una API pública
- luego un POST simple
- después añade autenticación
- y finalmente integra vuestra API real
Y para probar la API antes de programar:
- Postman
- Insomnia
- Bruno
- curl
Eso ayuda muchísimo para saber si el problema es Delphi o la API.