Archivo de configuración dispatch.yaml

El dispatch.yaml te permite anular las reglas de enrutamiento. Puedes usar el archivo dispatch.yaml para enviar solicitudes entrantes a un servicio específico (antes conocidos como módulos) según la ruta o el nombre de host en la URL.

Para obtener más información, consulta Cómo se enrutan las solicitudes.

Implementa el archivo de envío

El archivo dispatch.yaml debe residir en el mismo directorio que el código fuente de Go.

Para implementar el archivo dispatch.yaml, usa el siguiente comando. Antes de implementar el archivo de envío, debes asegurarte de que todos los servicios definidos en ese archivo ya se hayan implementado en App Engine.

gcloud

Ejecuta el comando de gcloud app deploy desde el directorio que contiene el dispatch.yaml:

gcloud app deploy dispatch.yaml

Para obtener más información sobre los comandos de implementación, consulta Implementa una app de Go 1.12.

Sintaxis

El elemento raíz en el archivo dispatch.yaml es dispatch: y contiene una lista de definiciones de enrutamiento que se especifican en los siguientes subelementos.

En las reglas que defines en el archivo de envío, debes usar patrones de URL de HTTP que incluyan la notación “.” para separar los subdominios. No se admiten las URL definidas con la notación “-dot-” de HTTPS.

Las reglas de envío dependen del orden y también pueden aplicarse a las URL que definas en el archivo cron.

Elemento Descripción
service

Especifica el nombre del servicio que manejará las solicitudes que coincidan con el patrón de url. Ten en cuenta que los servicios antes se denominaban “módulos”.

url

En el elemento url, defines el patrón de URL entre comillas, que puede incluir el nombre de host y la ruta de URL que no tengan más de 100 caracteres. Para el elemento service, especifica el nombre del servicio que deseas que maneje cualquier solicitud entrante que coincida con el patrón de URL del elemento url.

Sugerencia: Puedes incluir patrones glob como el carácter comodín * en el elemento url; sin embargo, esos patrones solo se pueden usar antes del nombre del host y al final de la ruta de la URL.

Un patrón de URL que puede incluir el nombre de host y la ruta de URL. Los caracteres glob se pueden usar para hacer coincidir patrones. Los caracteres glob se pueden especificar solo al principio y al final del patrón.

Ten en cuenta que las reglas de envío también se aplican a las URL que se usan en la configuración cron.

El archivo de envío no enruta las rutas de URL que comienzan con /_ah/.

Ejemplo

El siguiente es un archivo de envío de muestra que enruta solicitudes a http://simple-sample.appspot.com y solicitudes como http://simple-sample.appspot.com/favicon.ico al servicio default. Todo el contenido estático se entrega desde el servicio default. Las solicitudes móviles, como http://simple-sample.appspot.com/mobile/, se enrutan a un frontend móvil y solicitudes de trabajadores, como http://simple-sample.appspot.com/work/, se enrutan a un backend estático.

dispatch:
  # Default service serves the typical web resources and all static resources.
  - url: "*/favicon.ico"
    service: default

  # Default service serves simple hostname request.
  - url: "simple-sample.appspot.com/"
    service: default

  # Send all mobile traffic to the mobile frontend.
  - url: "*/mobile/*"
    service: mobile-frontend

  # Send all work to the one static backend.
  - url: "*/work/*"
    service: static-backend

Si prefieres reglas de enrutamiento generales que coincidan con la mayor cantidad de solicitudes posibles, puedes definir reglas con alcances más amplios. Por ejemplo:

# Send any path that begins with “simple-sample.appspot.com/mobile” to the mobile-frontend service.
- url: "simple-sample.appspot.com/mobile*"
  service: mobile-frontend

# Send any domain/sub-domain with a path that starts with “work” to the static backend service.
- url: "*/work*"
  service: static-backend

También puedes escribir expresiones que sean más estrictas:

# Matches the path "/fun", but not "/fun2" or "/fun/other".
- url: "*/fun"
  service: mobile-frontend

# Matches the hostname "customer1.myapp.com", but not "1.customer1.myapp.com".
- url: "customer1.myapp.com/*"
  service: static-backend

Límites

El archivo de envío puede contener hasta 20 reglas de enrutamiento. Cuando se especifica la string de la URL, ni el nombre de host ni la ruta pueden tener más de 100 caracteres.

Borra todas las reglas de envío

Para borrar todas las reglas de envío, sigue estos pasos:

  1. Edita el contenido del archivo dispatch.yaml de esta forma:

    dispatch:
    
  2. Implementa el archivo dispatch.yaml en App Engine.

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Documentación del entorno estándar de App Engine para Go 1.12