Keep base URL simple and intuitive
· La URL base es la parte fundamental de nuestra API Web.
· Una URL base simple e intuitiva permite que nuestra API sea sencilla.
Sólo 2 URLS bases por objeto
![]()
• La primera URL se usa para una colección
• La segunda URL para un elemento específico de una colección
No usar verbos en URL bases
· Algunas APIS Web usan una aproximación method-driven para el diseño de las URLs, estas suelen contener verbos, a veces al principio a veces al final lo que siempre lleva a una larga lista de URLS no consistentes:
Usar Operaciones HTTP para operar sobre las colecciones y elementos
• Las operaciones HTTP son POST, GET, PUT y DELETE que usaremos para el CRUD:
POST – CRUD (Create)
GET — CRUD (Read)
PUT — CRUD (Update)
DELETE – CRUD (Delete)
Uso de plurales
• Es importante ser consistente sobre todo. Siempre usar singular o siempre plural.
• En nuestra aproximación proponemos usar el plural del objeto a tratar:
![]()
Nombres concretos
• Se debe evitar URLS del tipo /ítems o /assets
• Y en su lugar usar /blogs, /videos, /news,…
TRATAMIENTO DE ERRORES
• Existen diversas aproximaciones:
· Facebook por ejemplo siempre devuelve un 200 (OK),
· Twilio alinea los errores con los códigos de estado HTTP y además devuelve un código de error propio.
· SimpleGeo también devuelve código estándar pero sin valor adicional.
Opción 1: Usar códigos de estado HTTP
· Usar códigos de estado HTTP e intentar mapearlos con códigos relevantes de la aplicación.
· Existen 70 códigos HTTP que nadie conoce completamente, por lo que se usará un subconjunto de estos.
· Códigos de estado HTTP a usar: Existen 3 códigos básicos:
· Todo OK
· Error de aplicación à error cliente
· Error del API à error servidor
Que mapearemos así:
· Todo OK à 200 (OK)
· Error de aplicación à 400 (Bad Request)
· Error del API à 500 (Internal Server Error)
· Devolver mensajes detallados en el payload
VERSIONADO
· Existen muchas formas:
· Nombrado:
· Especificar la versión con prefijo v
· Usar un número ordinal simple (1,2,10,100)
· No usar notación v1.2, ya que representa granularidad de versión
· Versión no debe ir en Header HTTP
· Nunca publicar un Servicio sin versión.
· Nuestro ejemplo /dogs se convertiría en /v1/dogs
PAGINACIÓN
· Es una mala idea devolver todo lo que está en BD.
· Para la paginación Facebook usa offset y limit, Twitter usa page and rpp (records per page), LinkedIn usa start y count.
- Usar limit y offset que es entendido en BD.
- Para recuperar elementos del 50 al 75 haría:
/dogs?limit=25&offset=50
- Incluir metadata en cada respuesta con el número total de registros disponibles.
- Paginación por defecto: si no se pone nada =
limit=10&offset=0





Deja un comentario