Un directorio de API típico contiene archivos .proto, que definen la superficie de la API, y archivos .yaml, que configuran el servicio de la API. Usar este diseño te ayuda a mantener configuraciones de servicios coherentes e interfaces con versiones en todos los entornos. Cada servicio de API debe tener un directorio de API dentro de un repositorio de API, y el directorio de API debe contener todos los archivos de definición de API y los secuencias de comandos de compilación.
Cada directorio de API debería tener el siguiente diseño estándar:
Directorio de API
Requisitos previos del repositorio
BUILD: el archivo de compilaciónMETADATA: el archivo de compilación de metadatosOWNERS: los propietarios del directorio de APIREADME.md: la información general sobre el servicio de API.
Archivos de configuración
{service}.yaml: el archivo de configuración del servicio de referencia, que es la representación YAML del mensaje protogoogle.api.Service.prod.yaml: el archivo de configuración del servicio delta de producciónstaging.yaml: el archivo de configuración del servicio delta de etapa de pruebastest.yaml: el archivo de configuración del servicio delta de pruebalocal.yaml: el archivo de configuración del servicio delta local.
Archivos de documentación
doc/*: los archivos de documentación técnica. Deberían estar en el formato Markdown
Definiciones de interfaz
v[0-9]*/*: cada directorio contiene una versión principal de la API, en particular, de los archivos de protocolo y las secuencias de comandos de compilación.{subapi}/v[0-9]*/*: cada directorio{subapi}contiene la definición de interfaz de una subAPI. Cada subAPI puede tener su propia versión principal independiente.type/*: archivos proto que contienen tipos que se comparten entre diferentes API, diferentes versiones de la misma API o entre la API y la implementación del servicio. Las definiciones de tipo entype/*no deben tener cambios rotundos una vez que se lancen.
Las definiciones de las API de Google públicas se publican en GitHub, consulta el repositorio de API de Google.