Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Guía de Implementación de API - Best Practices For Cloud Applications - Microsoft Docs
Guía de Implementación de API - Best Practices For Cloud Applications - Microsoft Docs
Watch now T
Join our digital experience on March 2–4, 2021 to learn, connect, and
explore new tech that’s ready to implement.
Azure Documentación del producto S Arquitectura S Conozca Azure S Desarrollar S Recursos S Portal Cuenta gratuita
Azure / Architecture / Prácticas recomendadas # Marcador D Comentarios / Editar + Compartir Leer en inglés
T
T Estilos de arquitectura
Procesamiento de solicitudes Administración de
respuestas y
T
T Principios de diseño para las solicitudes de gran
Tenga en cuenta los puntos siguientes cuando implemente el código para administrar las tamaño
aplicaciones de Azure
solicitudes. Mantenimiento de
T
T Opciones de tecnología
la capacidad de
Procedimientos recomendados respuesta, la
T
T
para aplicaciones en la nube Las acciones GET, PUT, DELETE, HEAD y PATCH escalabilidad y la
disponibilidad
Diseño de API
deben ser idempotentes. Publicación y
administración de
Implementación de API
una API web
Escalado automático El código que implementa estas solicitudes no debe imponer efectos secundarios. La misma
Prueba de una API
solicitud repetida en el mismo recurso debe dar como resultado el mismo estado. Por web
Trabajos en segundo plano
ejemplo, enviar varias solicitudes DELETE para el mismo URI debe tener el mismo efecto, Uso de Azure API
Almacenamiento en memoria
aunque el código de estado HTTP en los mensajes de respuesta sea diferente. La primera Management
caché
solicitud DELETE podría devolver el código de estado 204 (sin contenido), mientras que una Compatibilidad con
Content Delivery Network desarrolladores en
solicitud DELETE posterior podría devolver el código de estado 404 (no encontrado).
el lado cliente
Creación de particiones de
Supervisión de una
datos
7 Nota API web
Estrategias de creación de
Más información
particiones de datos (por En el artículo Idempotency Patterns del blog de Jonathan Oliver se ofrece una visión
servicio) general de la idempotencia y cómo se relaciona con las operaciones de administración
Consideraciones acerca de la de datos.
codificación de mensajes
Supervisión y diagnóstico
Guía de reintentos para Las acciones POST que crean nuevos recursos no
servicios específicos deben tener efectos secundarios no relacionados.
Control de errores transitorios
Si el objetivo de una solicitud POST es crear un recurso nuevo, los efectos de la solicitud
T
T Optimización del rendimiento
deben limitarse al nuevo recurso (y posiblemente cualquier recurso relacionado directamente
T
T Innovación responsable
si hay algún tipo de vinculación implicada). Por ejemplo, en un sistema de comercio
T
T Azure para profesionales de AWS
electrónico, una solicitud POST que crea un nuevo pedido para un cliente podría también
T
T Azure para profesionales de GCP modificar los niveles del inventario y generar información de facturación, pero no debería
T
T Marco de buena arquitectura de modificar la información no relacionada directamente con el pedido o tener otros efectos
Microsoft Azure secundarios en el estado general del sistema.
T
T Patrones de diseño
Categorías de Azure
Evite implementar operaciones POST, PUT y DELETE
T
T
T
T Sistema central e intermedio
T
T Administración y gobernanza Una API web debe devolver mensajes que contengan el código de estado HTTP correcto para
T
T Multimedia que el cliente determine cómo quiere controlar el resultado, los encabezados HTTP
T
T Migración adecuados para que el cliente entienda la naturaleza de los resultados y un cuerpo con el
formato apropiado para que el cliente analice los resultados.
T
T Mixed Reality
T
T Móvil Por ejemplo, una operación POST debe devolver el código de estado 201 (creado) y el
T
T Redes mensaje de respuesta debe incluir el URI del recurso recién creado en el encabezado Location
T
T SAP del mensaje de respuesta.
T
T Seguridad
T
T Storage Admita la negociación de contenido.
T
T Web
El cuerpo de un mensaje de respuesta puede contener datos en una variedad de formatos.
Plataforma de adopción de la nube
Por ejemplo, una solicitud HTTP GET podría devolver datos en formato JSON o XML. Cuando
el cliente envía una solicitud, puede incluir un encabezado Accept que especifica los formatos
de datos que puede controlar. Estos formatos se especifican como tipos de medios. Por
ejemplo, un cliente que emite una solicitud GET para recuperar una imagen puede especificar
un encabezado Accept que enumere los tipos de medios que el cliente puede administrar,
como por ejemplo image/jpeg, image/gif, image/png . Cuando la API web devuelve el
resultado, debe dar formato a los datos con uno de estos tipos de medios y especificar el
formato en el encabezado Content-Type de la respuesta.
HTTP = Copiar
HTTP = Copiar
HTTP/1.1 200 OK
...
Content-Type: application/json; charset=utf-8
...
Content-Length: ...
{"CustomerID":2,"CustomerName":"Bert","Links":[
{"rel":"self",
"href":"https://adventure-works.com/customers/2",
"action":"GET",
"types":["text/xml","application/json"]},
{"rel":"self",
"href":"https://adventure-works.com/customers/2",
"action":"PUT",
"types":["application/x-www-form-urlencoded"]},
{"rel":"self",
"href":"https://adventure-works.com/customers/2",
"action":"DELETE",
"types":[]},
{"rel":"orders",
"href":"https://adventure-works.com/customers/2/orders",
"action":"GET",
"types":["text/xml","application/json"]},
{"rel":"orders",
"href":"https://adventure-works.com/customers/2/orders",
"action":"POST",
"types":["application/x-www-form-urlencoded"]}
]}
En este ejemplo, los datos del cliente se representan mediante la clase Customer que se
muestra en el siguiente fragmento de código. Los vínculos de HATEOAS se mantienen en la
propiedad de la colección Links :
C# = Copiar
La operación HTTP GET recupera los datos del cliente del almacenamiento, construye un
objeto Customer y, después, rellena la colección Links . El resultado tiene el formato de un
mensaje de respuesta JSON. Cada vínculo consta de los siguientes campos:
La relación entre el objeto que se devuelve y el objeto que describe el vínculo. En este
caso self indica que el vínculo es una referencia al propio objeto (similar a un puntero
this en muchos lenguajes orientados a objetos) y orders es el nombre de una
colección que contiene la información de pedido relacionada.
El hipervínculo ( Href ) del objeto que describe el vínculo tiene la forma de un URI.
El tipo de solicitud HTTP ( Action ) que se puede enviar a este URI.
El formato de los datos ( Types ) que deben facilitarse en la solicitud HTTP o que se
pueden devolver en la respuesta, según el tipo de la solicitud.
Los vínculos de HATEOAS que se muestran en la respuesta HTTP de ejemplo indican que una
aplicación cliente puede realizar las siguientes operaciones:
Control de excepciones
Tenga en cuenta lo siguiente si una operación produce una excepción no detectada.
C# = Copiar
[HttpDelete]
[Route("customers/{id:int}")]
public IHttpActionResult DeleteCustomer(int id)
{
try
{
// Find the customer to be deleted in the repository
var customerToDelete = repository.GetCustomer(id);
) Sugerencia
No incluya información que pueda ser útil para un atacante que intenta entrar en su API.
Muchos servidores web interceptan condiciones de error por sí mismos antes de que lleguen
a la API web. Por ejemplo, si configura la autenticación de un sitio web y el usuario no
proporciona la información de autenticación correcta, el servidor web debe responder con
código de estado 401 (no autorizado). Cuando un cliente se ha autenticado, el código puede
realizar sus propias comprobaciones para asegurarse de que el cliente puede obtener acceso
al recurso solicitado. Si se produce un error en esta autorización, debe devolver un código de
estado 403 (prohibido).
HTTP = Copiar
HTTP = Copiar
HTTP/1.1 200 OK
...
Cache-Control: max-age=600, private
Content-Type: text/json; charset=utf-8
Content-Length: ...
{"orderID":2,"productID":4,"quantity":2,"orderValue":10.00}
En este ejemplo, el encabezado Cache-Control especifica que los datos devueltos deben
expirar a los 600 segundos, solo son adecuados para un solo cliente y no deben almacenarse
en una memoria caché compartida que usen otros clientes (es private). El encabezado Cache-
Control podría especificar public en lugar de private, en cuyo caso los datos pueden
almacenarse en una memoria caché compartida, o puede especificar no-store, en cuyo caso el
cliente no debe almacenar los datos en memoria caché. En el ejemplo de código siguiente se
muestra cómo construir un encabezado Cache-Control en un mensaje de respuesta:
C# = Copiar
// Return a response message containing the order and the cache control header
OkResultWithCaching<Order> response = new OkResultWithCaching<Order>(order,
{
CacheControlHeader = cacheControlHeader
};
return response;
}
...
}
C# = Copiar
7 Nota
7 Nota
C# = Copiar
// Return a response message containing the order and the cache control header
OkResultWithCaching<Order> response = new OkResultWithCaching<Order>(order,
{
...,
ETag = eTag
};
return response;
}
...
}
HTTP = Copiar
HTTP/1.1 200 OK
...
Cache-Control: max-age=600, private
Content-Type: text/json; charset=utf-8
ETag: "2147483648"
Content-Length: ...
{"orderID":2,"productID":4,"quantity":2,"orderValue":10.00}
) Sugerencia
Por motivos de seguridad, no permita que los datos confidenciales o los que se
devuelvan a través de una conexión autenticada (HTTPS) se almacenen en memoria
caché.
Una aplicación cliente puede emitir una solicitud GET posterior para recuperar el mismo
recurso en cualquier momento y, si ha cambiado el recurso (tiene una ETag diferente), debe
descartarse la versión en caché y agregarse la nueva versión a la memoria caché. Si un recurso
es grande y requiere una gran cantidad de ancho de banda para transmitirse de vuelta al
cliente, las solicitudes repetidas para capturar los mismos datos pueden resultar ineficaces.
Para combatir esta situación, el protocolo HTTP define el proceso siguiente para optimizar las
solicitudes GET que se deben admitir en una API web:
El cliente crea una solicitud GET que contiene la ETag de la versión actualmente en caché
del recurso al que hace referencia en un encabezado If-None-Match HTTP:
HTTP = Copiar
La operación GET de la API web obtiene la ETag actual de los datos solicitados (el pedido
2 en el ejemplo anterior) y la compara con el valor del encabezado If-None-Match.
Si la ETag actual de los datos solicitados coincide con la que proporciona la solicitud, el
recurso no ha cambiado y la API web debe devolver una respuesta HTTP con un cuerpo
de mensaje vacío y un código de estado 304 (no modificado).
Si la ETag actual de los datos solicitados no coincide con la que proporciona la solicitud,
los datos han cambiado y la API web debe devolver una respuesta HTTP con los datos
nuevos en el cuerpo del mensaje y un código de estado 200 (correcto).
Si los datos solicitados ya no existen, la API web debe devolver una respuesta HTTP con
el código de estado 404 (no encontrado).
El cliente usa el código de estado para mantener la memoria caché. Si los datos no ha
cambiado (código de estado 304), el objeto puede permanecer en la memoria caché y la
aplicación cliente debe seguir usando esta versión del objeto. Si los datos han cambiado
(código de estado 200), debe descartarse el objeto almacenado en caché e insertarse
uno nuevo. Si los datos ya no están disponibles (código de estado 404), el objeto debe
quitarse de la memoria caché.
7 Nota
C# = Copiar
return response;
}
catch
{
return InternalServerError();
}
}
...
}
C# = Copiar
) Sugerencia
En este ejemplo, la ETag para los datos se genera mediante la aplicación de un algoritmo
hash a los datos recuperados del origen de datos subyacente. Si la ETag se puede
calcular de alguna otra manera, es posible optimizar aún más el proceso y los datos solo
deben capturarse desde el origen de datos si han cambiado. Este enfoque es
especialmente útil si los datos son grandes o el acceso al origen de datos puede
provocar una latencia significativa (por ejemplo, si el origen de datos es una base de
datos remota).
El cliente crea una solicitud PUT que contiene los nuevos detalles para el recurso y la
ETag de la versión actualmente en caché del recurso al que hace referencia en un
encabezado If-Match HTTP: En el ejemplo siguiente se muestra una solicitud PUT que
actualiza un pedido:
HTTP = Copiar
La operación PUT de la API web obtiene la ETag actual de los datos solicitados (el
pedido 1 en el ejemplo anterior) y la compara con el valor del encabezado If-Match.
Si la ETag actual de los datos solicitados coincide con la que proporciona la solicitud, el
recurso no ha cambiado y la API web debe realizar la actualización y devolver un
mensaje con el código de estado HTTP 204 (sin contenido). La respuesta puede incluir
los encabezados Cache-Control y ETag de la versión actualizada del recurso. La
respuesta siempre debe incluir el encabezado Location que hace referencia al URI del
recurso recién actualizado.
Si la ETag actual de los datos solicitados no coincide con la que proporciona la solicitud,
otro usuario ha cambiado los datos desde que se capturaron y la API web debe devolver
una respuesta HTTP con un cuerpo de mensaje vacío y un código de estado 412 (error
de condición previa).
Si el recurso que se va a actualizar ya no existe, la API web debe devolver una respuesta
HTTP con el código de estado 404 (no encontrado).
El cliente usa el código de estado y los encabezados de las respuestas para mantener la
memoria caché. Si los datos se han actualizado (código de estado 204), el objeto puede
permanecer en la memoria caché (siempre y cuando el encabezado Cache-Control no
especifique no-store), pero debe actualizarse la ETag. Si otro usuario ha cambiado los
datos (código de estado 412) o no se encuentran (código de estado 404), el objeto en
caché debe descartarse.
C# = Copiar
// Create the No Content response with Cache-Control, ETag, and Location headers
var cacheControlHeader = new CacheControlHeaderValue();
cacheControlHeader.Private = true;
cacheControlHeader.MaxAge = new TimeSpan(0, 10, 0);
hashedOrder = order.GetHashCode();
hashedOrderEtag = $"\"{hashedOrder}\"";
var eTag = new EntityTagHeaderValue(hashedOrderEtag);
return response;
}
) Sugerencia
El uso del encabezado If-Match es totalmente opcional y, si se omite, la API web siempre
intentará actualizar el pedido especificado, posiblemente sobrescribiendo ciegamente
una actualización que otro usuario haya realizado. Para evitar problemas debidos a
actualizaciones perdidas, facilite siempre un encabezado If-Match.
Una única solicitud podrían producir un objeto masivo que consume gran cantidad de
recursos. Si durante el proceso de streaming la API web determina que la cantidad de datos
de una solicitud ha superado algunos límites aceptables, puede anular la operación y devolver
un mensaje de respuesta con el código de estado 413 (entidad solicitada demasiado grande).
Puede minimizar el tamaño de los objetos grandes transmitidos por la red con la compresión
HTTP. Este enfoque ayuda a reducir la cantidad de tráfico de red y la latencia de red asociada,
pero a costa de requerir un procesamiento adicional en el cliente y en el servidor que
hospeda la API web. Por ejemplo, una aplicación cliente que espera recibir datos comprimidos
puede incluir un encabezado de solicitud Accept-Encoding: gzip (también se pueden
especificar otros algoritmos de compresión de datos). Si el servidor admite la compresión,
debe responder con el contenido almacenado en formato gzip en el cuerpo del mensaje y el
encabezado de respuesta Content-Encoding: gzip.
Puede combinar la compresión codificada con streaming; comprima los datos antes de hacer
streaming y especifique la codificación de contenido gzip y la codificación de transferencia
fragmentada en los encabezados de los mensajes. Tenga en cuenta también que algunos
servidores web (por ejemplo, Internet Information Server) pueden configurarse para
comprimir automáticamente las respuestas HTTP sin tener en cuenta si la API web comprime
los datos o no.
Las respuestas parciales y las solicitudes HTTP HEAD se describen con más detalle en Diseño
de API.
Si está creando aplicaciones cliente mediante .NET Framework, todos los mensajes POST y
PUT enviarán primero mensajes con encabezados Expect: 100-Continue de forma
predeterminada. Al igual que con el lado servidor, el proceso lo controla de forma
transparente .NET Framework. Sin embargo, este proceso hace que cada solicitud POST y PUT
necesite dos envíos de ida y vuelta al servidor, incluso para las solicitudes pequeñas. Si la
aplicación no envía solicitudes con grandes cantidades de datos, puede deshabilitar esta
característica mediante la clase ServicePointManager para crear objetos ServicePoint en
la aplicación cliente. Un objeto ServicePoint controla las conexiones que el cliente realiza
en un servidor basado en el esquema y los fragmentos de host de los URI que identifican
recursos en el servidor. Después, puede establecer la propiedad Expect100Continue del
objeto ServicePoint en false. Todas las solicitudes POST y PUT posteriores que realice el
cliente a través de un URI que coincida con el esquema y los fragmentos de host del objeto
ServicePoint se enviarán sin encabezados Expect: 100-Continue. El código siguiente
muestra cómo configurar un objeto ServicePoint que configura todas las solicitudes
enviadas a los URI con un esquema de http y un host de www.contoso.com .
C# = Copiar
Para controlar estos casos, la API web debe admitir las cadenas de consulta que permiten que
la aplicación cliente refina las solicitudes o capture los datos en bloques (o páginas) discretos
más fáciles de administrar. El código siguiente muestra el método GetAllOrders en el
controlador Orders . Este método recupera los detalles de los pedidos. Si este método no
tenía restricciones, posiblemente podría devolver una gran cantidad de datos. Los parámetros
limit y offset están diseñados para reducir el volumen de datos a un subconjunto más
pequeño, en este caso solo los 10 primeros pedidos de forma predeterminada:
C# = Copiar
Una aplicación cliente puede emitir una solicitud para recuperar 30 pedidos empezando con
un desplazamiento de 50 mediante el URI https://www.adventure-
works.com/api/orders?limit=30&offset=50 .
) Sugerencia
Evite permitir que las aplicaciones de cliente especifiquen las cadenas de consulta que
resultan en un URI que tenga más de 2000 caracteres. Muchos servidores y clientes web
no pueden controlar los URI así de largos.
La API web también debe proporcionar un mecanismo para devolver los resultados del
procesamiento a la aplicación cliente. Puede lograr esto si proporciona un mecanismo de
sondeo de aplicaciones cliente para consultar periódicamente si ha finalizado el
procesamiento y se ha obtenido el resultado o si habilita la API para que envíe una
notificación cuando la operación se haya completado.
Puede implementar un mecanismo de sondeo sencillo si ofrece una URI polling que actúe
como un recurso virtual con el siguiente enfoque:
7 Nota
Las conexiones HTTP persistentes son una característica puramente opcional para reducir
la sobrecarga de la red asociada al restablecimiento repetido de un canal de
comunicaciones. Ni la API web ni la aplicación cliente deben depender de que haya una
conexión HTTP persistente disponible. No use conexiones HTTP persistentes para
implementar sistemas de notificación de estilo Comet; en su lugar, debería usar sockets
(o sockets web si están disponibles) en la capa TCP. Por último, tenga en cuenta que los
encabezados Keep-Alive son de uso limitado si una aplicación cliente se comunica con
un servidor mediante un proxy; solo la conexión con el cliente y el proxy será persistente.
Es útil poder separar estos problemas de los problemas técnicos relativos a la implementación
de la API web. Por este motivo, considere la creación de una fachada ,que se ejecute como
un proceso independiente y que enrute las solicitudes a la API web. La fachada puede
proporcionar las operaciones de administración y redirigir las solicitudes validadas a la API
web. El uso de una fachada también puede aportar muchas ventajas funcionales, entre las que
se incluyen:
La naturaleza de una API web incorpora sus propios requisitos adicionales para comprobar
que funciona correctamente. Debe prestar especial atención a los siguientes aspectos:
Pruebe todas las rutas para comprobar que invocan las operaciones correctas. Preste
especial atención al código de estado HTTP 405 (método no permitido) que se
devuelven de forma inesperada, ya que esto puede indicar una desigualdad entre una
ruta y los métodos HTTP (GET, POST, PUT, DELETE) que se pueden enviar a esa ruta.
Envíe solicitudes HTTP a las rutas que no las admitan, como el envío de una solicitud
POST a un recurso concreto (las solicitudes POST solo se pueden enviar a las colecciones
de recursos). En estos casos, la única respuesta válida debería ser el código de estado
405 (no permitido).
Compruebe que todas las rutas estén protegidas correctamente y que estén sujetas a las
comprobaciones de autenticación y autorización apropiadas.
7 Nota
Pruebe el control de excepciones que realiza cada operación y compruebe que se pasa
una respuesta HTTP adecuada y significativa de vuelta a la aplicación cliente.
Compruebe todos los vínculos y los URI de los mensajes de respuesta. Por ejemplo, un
mensaje HTTP POST debe devolver el URI del recurso recién creado. Todos los vínculos
HATEOAS deben ser válidos.
Asegúrese de que cada operación devuelve los códigos de estado correctos para
diferentes combinaciones de entradas. Por ejemplo:
Si una consulta es correcta, debe devolver el código de estado 200 (correcto).
Si no se encuentra un recurso, la operación debe devolver el código de estado HTTP
404 (no encontrado).
Si el cliente envía una solicitud que elimina correctamente un recurso, el código de
estado debe ser 204 (sin contenido).
Si el cliente envía una solicitud que crea un nuevo recurso, el código de estado debe
ser 201 (creado).
Tenga cuidado con los códigos de estado de respuestas inesperados en el intervalo 5xx.
Normalmente, el servidor host informa de estos mensajes para indicar que no pudo
completar una solicitud válida.
Pruebe las cadenas de consultas. Si una operación puede tomar parámetros opcionales
(por ejemplo, las solicitudes de paginación), pruebe las diferentes combinaciones y
ordenaciones de los parámetros.
También debería crear y ejecutar pruebas de rendimiento para comprobar que la API web
funciona satisfactoriamente bajo presión. Puede crear un proyecto de pruebas de carga y
rendimiento web con Visual Studio Ultimate. Para más información, consulte Ejecutar pruebas
de rendimiento en la aplicación.
!. Implemente la API web en un sitio web, un servicio en la nube de Azure o una máquina
virtual de Azure.
7 Nota
%. Para cada API web, especifique las operaciones HTTP que expone la API web junto con
los parámetros opcionales que una operación puede tomar como entrada. También
puede configurar si el servicio de administración de API debe almacenar en caché la
respuesta recibida de la API web para optimizar las solicitudes repetidas para los
mismos datos. Registre los detalles de las respuestas HTTP que puede generar cada
operación. Esta información se usa para generar la documentación para desarrolladores,
por lo que es importante que sea precisa y completa.
'. Cree un producto. Un producto es la unidad de publicación; agregue las API web que
había conectado previamente al servicio de administración al producto. Cuando se
publica el producto, las API web están disponibles para los desarrolladores.
7 Nota
(. Configure directivas para cada API web. Las directivas rigen aspectos como si se deben
permitir las llamadas entre dominios, cómo autenticar los clientes, si se debe hacer una
conversión entre los formatos de datos XML y JSON de forma transparente, si se quieren
restringir las llamadas de un determinado intervalo de IP, las cuotas de uso y si se quiere
limitar la tasa de llamadas. Las directivas pueden aplicarse globalmente a todo el
producto, a una API web única de un producto o a operaciones individuales de una API
web.
Para más información, consulte la documentación de API Management.
) Sugerencia
En esta estructura, si está utilizando nombres DNS personalizados para sus sitios web,
debe configurar el registro CNAME adecuado para que cada sitio web apunte al nombre
DNS del sitio web del Administrador de tráfico de Azure.
Documentación del producto, donde se enumeran las operaciones que expone, los
parámetros necesarios y las distintas respuestas que se pueden devolver. Tenga en
cuenta que esta información se genera a partir de los detalles proporcionados en el
paso 3 de la lista en la sección Publicación de una API web mediante el servicio de
Microsoft Azure API Management.
Fragmentos de código que muestran cómo invocar operaciones de varios lenguajes,
incluidos JavaScript, C#, Java, Ruby, Python y PHP.
Una consola para desarrolladores que permite que un desarrollador envíe una solicitud
HTTP para probar cada una de las operaciones del producto y ver los resultados.
Una página donde el desarrollador puede informar de los problemas encontrados.
Azure Portal le permite personalizar el portal para desarrolladores para cambiar el estilo y el
diseño, de forma que coincida con la marca de su organización.
La creación de un SDK del lado cliente es una tarea de una envergadura considerable, ya que
debe implementarse de forma coherente y probarse cuidadosamente. Sin embargo, gran
parte de este proceso se puede realizar de forma mecánica y muchos proveedores ofrecen
herramientas que pueden automatizar muchas de estas tareas.
Puede ver estos datos en tiempo real en Azure Portal. También puede crear pruebas web que
supervisen el estado de la API web. Una prueba web envía una solicitud periódica a un URI
especificado en la API web y captura la respuesta. Puede especificar la definición de una
respuesta correcta (por ejemplo, el código de estado HTTP 200) y, si la solicitud no devuelve
esta respuesta, puede establecer que se envíe una alerta a un administrador. Si es necesario,
el administrador puede reiniciar el servidor que hospeda la API web en caso de que se haya
producido un error.
Uso Esta pestaña proporciona información sobre el número de llamadas API realizadas y
el ancho de banda que se ha usado para controlar esas llamadas en el tiempo. Puede
filtrar los detalles de uso por producto, API y operación.
Estado. Esta pestaña permite ver el resultado de las solicitudes de API (los códigos de
estado HTTP devueltos), la eficacia de la directiva de almacenamiento en caché, el
tiempo de respuesta de las API y el tiempo de respuesta del servicio. De nuevo, puede
filtrar los datos del estado por producto, API y operación.
Actividad. Esta pestaña ofrece un resumen de texto de los números de llamadas
correctas, erróneas y bloqueadas, el tiempo medio de respuesta y los tiempos de
respuesta de cada producto, API web y operación. Esta página también muestra el
número de llamadas que ha realizado cada desarrollador.
En un vistazo. Esta pestaña muestra un resumen de los datos de rendimiento, incluidos
los desarrolladores responsables de realizar la mayoría de las llamadas a API y los
productos, API web y operaciones que recibieron estas llamadas.
Puede usar esta información para determinar si una operación o API web determinadas están
causando un cuello de botella y si es necesario escalar el entorno de host y agregar más
servidores. También puede determinar si una o varias aplicaciones usan un volumen de
recursos desproporcionado y aplican las directivas adecuadas para establecer las cuotas y
limitar las tasas de llamadas.
7 Nota
Más información
ASP.NET Web API OData contiene ejemplos e información adicional sobre la
implementación de una API web de OData mediante ASP.NET.
Introducing batch support in Web API and Web API OData (Incorporación de
compatibilidad con procesos por lotes en API web y OData de Api web) describe cómo
implementar operaciones por lotes en una API web mediante OData.
En el artículo Idempotency Patterns del blog de Jonathan Oliver se ofrece una visión
general de la idempotencia y cómo se relaciona con las operaciones de administración
de datos.
La página Status Code Definitions del sitio web de W3C contiene una lista completa
de códigos de estado HTTP y sus descripciones.
En la página Ejecutar tareas en segundo plano con WebJobs se ofrece información y
ejemplos sobre el uso de WebJobs para realizar operaciones en segundo plano.
En la página Notificación a los usuarios con Azure Notification Hubs se muestra cómo
usar un centro de notificaciones de Azure para insertar respuestas asincrónicas en las
aplicaciones cliente.
En la página API Management se describe cómo publicar un producto que ofrezca un
acceso seguro y controlado a una API web.
En la referencia de la API REST de Azure API Management se describe cómo usar la API
REST de API Management para crear aplicaciones de administración personalizadas.
En la página Métodos de enrutamiento de Traffic Manager se resume cómo se puede
usar Azure Traffic Manager para realizar un equilibrio de carga de las solicitudes entre
varias instancias de un sitio web que hospeda una API web.
En la página Configurar Application Insights para ASP.NET se ofrece información
detallada sobre la instalación y configuración de Application Insights en un proyecto
ASP.NET Web API.
Comentarios
6 Esta página
. Español (España) 0 Tema Documentación de versiones anteriores Blog Contribuir Privacidad & cookies Términos de uso Comentarios del sitio