Uso avanzado de Microsoft Graph

Implementar la seguridad de Azure para desarrolladores

Anushika Agarwal

Cloud Data Engineer

Analogía: viajes al súper

  • Lleva la compra en viajes más pequeños

  • Más ligero, rápido y seguro

Viajes con la compra

Implementar la seguridad de Azure para desarrolladores

Paginación

  • Divide resultados grandes en páginas pequeñas
  • Respuestas más rápidas y menos timeouts
  • ¿Cómo se obtienen las siguientes páginas?

Paginación

Implementar la seguridad de Azure para desarrolladores

Ejemplo: PeopleSphere con paginación

  • Miles de registros de empleados en páginas manejables

Ejemplo - Paginación en PeopleSphere

Implementar la seguridad de Azure para desarrolladores

Paginación en el servidor

  • El servicio elige un tamaño de página por defecto
  • El cliente no especifica el tamaño
  • Ejemplo
    • GET /v1.0/users : (por defecto) Devuelve 100 elementos por página

Paginación del lado del servidor

Implementar la seguridad de Azure para desarrolladores

Paginación en el cliente

  • El cliente especifica los elementos por página

Paginación del lado del cliente

Implementar la seguridad de Azure para desarrolladores

Parámetros de consulta para paginación

  • Parámetros de consulta

    • $top: número de elementos por página.

    Parámetros de consulta - Top

  • $skip: desplazamiento; empieza tras los N primeros elementos

    Parámetros de consulta - Skip

Implementar la seguridad de Azure para desarrolladores

Ejemplo de paginación en el cliente

  • Ejemplo:
    • https://graph.microsoft.com/v1.0/groups?$top=2

Paginación del lado del cliente

Implementar la seguridad de Azure para desarrolladores

Analogía de batching: carrito online

  • Varios artículos en un carrito
  • Un pago, un recibo

Analogía - Carrito de compra online

Implementar la seguridad de Azure para desarrolladores

Batching

  • Combina varias solicitudes de Graph en una llamada HTTP
  • Una carga útil -> una respuesta con todos los resultados

  • Ventajas

    • Menos viajes, menor latencia
    • Ideal para dashboards.
  • Límite

    • Hasta 20 solicitudes por lote

Batching

Implementar la seguridad de Azure para desarrolladores

Extremo de solicitud por lotes

  • Extremo

    • Método: POST
    • Extremo:https://graph.microsoft.com/v1.0/$batch
  • $batch en lugar de un recurso específico como users

Extremo de solicitud por lotes

Implementar la seguridad de Azure para desarrolladores

Cuerpo de la solicitud por lotes

  • El cuerpo es un objeto JSON
  • Contiene una propiedad: requests
  • requests es un array (hasta 20 elementos)
{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Implementar la seguridad de Azure para desarrolladores

Elementos de solicitud y cabeceras

  • Cada elemento de solicitud necesita

    • id: etiqueta única para casar la respuesta
    • method: (GET/POST/PATCH/DELETE)
    • url: ruta relativa
  • Cabeceras: Content-Type: application/json

{ "requests": 
   [ {
      "id": "1",
      "method": "GET",
      "url": "/me/memberOf"
    },
    {
      "id": "2",
      "method": "GET",
      "url": "/me/planner/tasks"
    } ]
}
Implementar la seguridad de Azure para desarrolladores

Respuesta del lote

  • Cada entrada representa una solicitud
{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Implementar la seguridad de Azure para desarrolladores

Qué incluye cada respuesta

  • Cada elemento de respuesta incluye

    • id: coincide con la solicitud original

    • status: estado HTTP de ese elemento

      • 200: OK
      • 403: Forbidden
    • headers: p. ej., Content-Type

    • body: datos u objeto de error

{
  "responses": [
    {  "id": "1", 
        "status": 200, 
        "body": { "value": [/* ... */]}},
    { 
        "id": "2", 
        "status": 403, 
        "body": { "error": [/* ... */]}}
  ]
}

Implementar la seguridad de Azure para desarrolladores

¡Vamos a practicar!

Implementar la seguridad de Azure para desarrolladores

Preparing Video For Download...