APIs REST profesionales
Una API REST profesional no es solo endpoints que devuelven JSON. Debe tener contratos claros, errores consistentes, paginacion, seguridad, versionado y documentacion.
Recursos
Usa sustantivos:
txt
/api/products
/api/products/{id}
/api/orders
/api/orders/{id}Evita rutas orientadas a acciones salvo casos justificados.
Filtros y orden
txt
GET /api/products?search=keyboard&page=0&size=20&sort=price,ascDocumenta limites de size para evitar abusos.
Idempotencia
PUT debe ser idempotente. POST normalmente no.
Para operaciones sensibles, usa idempotency keys:
txt
Idempotency-Key: 7f1c...Errores
Formato estable:
json
{
"code": "PRODUCT_NOT_FOUND",
"message": "Product not found",
"timestamp": "2026-06-26T10:00:00Z"
}OpenAPI
Dependencia habitual:
xml
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
<version>2.6.0</version>
</dependency>Expone documentacion interactiva:
txt
/swagger-ui.htmlVersionado
Opciones:
txt
/api/v1/products
Accept: application/vnd.company.v1+jsonElige una politica y mantenla.
Rate limiting
Spring no trae rate limiting completo por defecto. Puedes integrarlo con gateway, Redis o librerias especializadas.
Buenas practicas
- Contratos documentados.
- Errores estables.
- Paginacion en colecciones.
- Validacion de entrada.
- Autorizacion real en backend.
- OpenAPI actualizado en CI.
- Tests de contrato en endpoints criticos.
