Un servicio web es un conjunto de métodos y estándares que permiten la interoperabilidad entre aplicaciones distintas, independientemente de la plataforma, el lenguaje de programación o el sistema operativo en que estén desarrolladas.
La interoperabilidad es la característica clave: un servicio web actúa como una interfaz estandarizada que expone funcionalidades de una aplicación para que otras aplicaciones puedan consumirlas a través de la red, típicamente Internet.
Definición formal (W3C): Un servicio web es un sistema software diseñado para soportar la interacción interoperable máquina-a-máquina a través de una red.
Existen principalmente dos grandes familias de servicios web:
| Característica | SOAP | REST |
|---|---|---|
| Tipo | Protocolo | Estilo arquitectónico |
| Formato de mensaje | XML | JSON, XML, otros |
| Protocolo de transporte | HTTP, SMTP, TCP... | HTTP |
| Descripción | WSDL | OpenAPI / Swagger |
| Estado | Sin estado (stateless) | Sin estado (stateless) |
| Estándar | W3C | No hay un estándar único |
| Seguridad | WS-Security | HTTPS + OAuth |
| Complejidad | Mayor | Menor |
| Uso típico | Integración empresarial, banca | APIs web, móviles, microservicios |
SOAP es un protocolo de comunicación basado en XML para el intercambio de información estructurada en entornos distribuidos. Fue desarrollado originalmente por Microsoft y posteriormente estandarizado por el W3C.
Un mensaje SOAP es un documento XML con la siguiente estructura:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<!-- Información de cabecera opcional: autenticación, transacciones... -->
</soap:Header>
<soap:Body>
<!-- Contenido del mensaje: petición o respuesta -->
<ObtenerCliente>
<idCliente>12345</idCliente>
</ObtenerCliente>
</soap:Body>
</soap:Envelope>
Los servicios SOAP se describen mediante WSDL, un documento XML que especifica:
REST no es un protocolo, sino un estilo arquitectónico definido por Roy Fielding en su tesis doctoral (2000). Se basa en los principios del protocolo HTTP y propone un conjunto de restricciones para diseñar sistemas distribuidos escalables.
En REST, todo es un recurso identificado por una URI (Uniform Resource Identifier):
https://api.ejemplo.com/clientes → colección de clientes
https://api.ejemplo.com/clientes/123 → cliente con id 123
https://api.ejemplo.com/clientes/123/pedidos → pedidos del cliente 123
| Método HTTP | Operación CRUD | Descripción |
|---|---|---|
| GET | Read | Obtener un recurso o colección |
| POST | Create | Crear un nuevo recurso |
| PUT | Update | Actualizar un recurso completo |
| PATCH | Update | Actualizar parcialmente un recurso |
| DELETE | Delete | Eliminar un recurso |
REST puede usar múltiples formatos, siendo JSON el más habitual:
{
"id": 123,
"nombre": "María García",
"email": "maria@ejemplo.com",
"fechaAlta": "2024-01-15"
}
| Código | Significado |
|---|---|
| 200 OK | Petición exitosa |
| 201 Created | Recurso creado correctamente |
| 204 No Content | Éxito sin contenido en respuesta |
| 400 Bad Request | Petición mal formada |
| 401 Unauthorized | Autenticación requerida |
| 403 Forbidden | Sin permisos |
| 404 Not Found | Recurso no encontrado |
| 500 Internal Server Error | Error del servidor |
Una API RESTful es aquella que sigue los principios REST. Se documenta habitualmente con OpenAPI/Swagger, que define:
Precursor de SOAP. Protocolo sencillo que usa XML para codificar las llamadas a procedimientos remotos y HTTP como transporte. Actualmente en desuso.
Desarrollado por Facebook (2015). Es un lenguaje de consulta para APIs que permite al cliente especificar exactamente qué datos necesita. A diferencia de REST (múltiples endpoints), GraphQL expone un único endpoint.
query {
cliente(id: "123") {
nombre
email
pedidos {
fecha
total
}
}
}
Desarrollado por Google. Framework de llamada a procedimiento remoto (RPC) de alto rendimiento que usa Protocol Buffers como formato de serialización binario. Muy eficiente para comunicaciones entre microservicios.
Protocolo que establece una conexión bidireccional y persistente entre cliente y servidor, a diferencia de HTTP (que es petición-respuesta). Útil para aplicaciones en tiempo real (chats, dashboards en vivo...).
| Estándar | Descripción |
|---|---|
| HTTP/HTTPS | Protocolo de transporte base para la mayoría de servicios web |
| XML | Lenguaje de marcado usado en SOAP y WSDL |
| JSON | Formato ligero de intercambio de datos, predominante en REST |
| WSDL | Descripción formal de servicios SOAP |
| UDDI | Directorio para publicar y descubrir servicios web (obsoleto en la práctica) |
| WS-Security | Estándar de seguridad para servicios SOAP |
| OAuth 2.0 | Protocolo de autorización ampliamente usado en APIs REST |
| OpenAPI/Swagger | Especificación para describir APIs REST |
| SSL/TLS | Seguridad en la capa de transporte (HTTPS) |
Dirección URL específica donde un servicio web está disponible y puede recibir peticiones.
Datos útiles que se envían o reciben en una petición/respuesta, excluyendo cabeceras y metadatos.
Una operación es idempotente si ejecutarla múltiples veces produce el mismo resultado que ejecutarla una sola vez. En REST: GET, PUT y DELETE son idempotentes; POST no lo es.
Proceso de convertir objetos en memoria a un formato transmisible (XML, JSON...) y viceversa.
Interfaz que define cómo interactúan dos sistemas. Los servicios web son un tipo de API accesible a través de la red.
Arquitectura donde una aplicación se divide en servicios pequeños e independientes que se comunican entre sí mediante APIs (habitualmente REST o gRPC).
SERVICIOS WEB
├── SOAP
│ ├── Protocolo formal basado en XML
│ ├── Descripción: WSDL
│ ├── Seguridad: WS-Security
│ └── Uso: entornos empresariales, banca
│
├── REST
│ ├── Estilo arquitectónico sobre HTTP
│ ├── Recursos identificados por URIs
│ ├── Métodos: GET, POST, PUT, DELETE...
│ ├── Formato: JSON (principalmente)
│ └── Uso: APIs web, móviles, microservicios
│
├── GraphQL
│ ├── Lenguaje de consulta para APIs
│ └── Un único endpoint flexible
│
└── gRPC
├── RPC de alto rendimiento (Google)
└── Protocol Buffers (formato binario)
Documento de estudio para oposiciones — Tecnologías de la Información y Comunicación