API - Documentación¶
PhotoILike proporciona un servicio de API REST que permite a las compañías integrar los servicios en sus propios sistemas. En esta documentación encontrará las instrucciones necesarias para que esta integración se realice de la forma más sencilla posible. Si aun así tiene alguna duda o problema, no dude en contactar con nosotros a través de este enlace.
Client-key¶
Para los clientes finales, PhotoILike dispone de un Software as a Service en https://app.photoilike.com. Sin embargo, las empresas que requieran dar soporte a varios clientes, pueden integrar nuestros servicios dentro de sus propias implementaciones.
PhotoILike proporciona una manera directa de trabajar con múltiples usuarios a través de client-keys, teniendo cada usuario final un client-key único. PhotoILike permite crear tantos client-keys como sean necesarios y estos deben ser utilizados para cada uno de los recursos que se soliciten.
Cantidad máxima de peticiones simultáneas¶
La mayoría de las peticiones que se pueden realizar al API de PhotoILike deben ir acompañadas de un client-key y tienen un límite por segundo. La siguiente tabla muestra la cantidad máxima de peticiones por segundo que se pueden realizar por client-key.
Recurso | Límite |
---|---|
score |
5/sg |
label |
5/sg |
sort |
10/sg |
El resto de peticiones no tienen por qué ir acompañadas de un client-key, pero también tienen un límite por segundo. La siguiente tabla muestra la cantidad de peticiones que se pueden realizar en esos casos.
Recurso | Limite |
---|---|
client key |
5/sg |
Código de errores¶
Se utilizan los código HTTP para definir los errores de una petición que no se resuelve de forma satisfactoria. A continuación se muestran los distintos tipos de errores que se pueden producir al utilizar nuestra API, aunque si tiene alguna duda siempre puede contactar con el equipo de PhotoILike a través de este enlace.
Errores en el lado del cliente¶
Código HTTP | Significado |
---|---|
400 |
Petición incorrecta. Este error suele aparecer cuando un parámetro que se ha introducido no es correcto, se han introducido parámetros no esperados o falta algún parámetro por introducir. |
401 |
No se ha autenticado correctamente. |
402 |
Se han agotado todos los créditos disponibles. |
403 |
No dispone de los permisos adecuados para poder llevar a cabo la petición solicitada. |
404 |
No se encuentra el recurso solicitado. |
405 |
El método solicitado no está disponible. |
408 |
La url de la que se intenta obtener el recurso a procesar tarda demasiado tiempo. |
411 |
El servidor que contiene la imagen a procesar no devuelve información sobre su tamaño. |
413 |
La petición solicitada tiene un tamaño muy grande. |
415 |
El formato en el que se envió la petición no está soportado. |
429 |
Se han realizado muchas peticiones consecutivas. Los parámetros X-RateLimit en las cabeceras indican el estado actual de las peticiones. |
Errores en el lado del servidor¶
Desde PhotoILike trabajamos duro para que no se produzca ningún error en nuestros servidores, pero por razones que escapan a nuestro control se podría producir alguno de los siguientes:
Código HTTP | Significado |
---|---|
500 |
Se ha producido un error interno en el servidor y no ha podido procesar la petición. |
502 |
El acceso a los servicios se está configurando y aún no está disponible. |
503 |
El servicio no está disponible en ese momento. |
504 |
El servidor esta tardando más tiempo del esperado en resolver la petición. |
Recomendaciones¶
Numerosos componentes de una red, como los servidores DNS, los conmutadores o los balanceadores de carga, entre otros, pueden generar errores en cualquier punto de la vida de una solicitud determinada. La técnica habitual para abordar estas respuestas de error en un entorno de red consiste es implementar los reintentos en la aplicación cliente. Esta técnica aumenta la confiabilidad de la aplicación y reduce los costos operativos para el desarrollador.
Por ese motivo es necesario que al usar cualquier API, sea de PhotoILike o cualquier otra, se reintenten las solicitudes originales que reciban errores de servidor (5xx) o limitación. Sin embargo, los errores de cliente (4xx)1 indican que es preciso revisar la solicitud para corregir el problema antes de reintentar la petición.
Una forma sencilla de realizar los intentos es la utilización de algoritmos de backoff exponencial y jitter para los que existen implementaciones disponibles para varios lenguajes2.
-
Ante los errores 408 y 429 se puede reintentar la petición porque pueden ser un fallo temporal. En el ejemplo del error 408 es debido a que la URL desde la que se intenta obtener la imagen tarda mucho tiempo en responder lo que indica que puede estar saturado en un instante determinado y que más adelante en el tiempo no esté saturada y responda con normalidad. En cuanto al error 429, se debe a que se están haciendo muchas peticiones simultáneas, lo que por definición indica que en un breve periodo de tiempo se pueden volver a realizar peticiones. ↩
-
Algunas librerías disponibles con la implementación: