Recuperar las salidas de una versión publicada
Qué contiene una versión publicada después de la preparación, los tres lugares desde los que se puede recuperar una salida y la ruta autorizada de gestión que responde a un miembro antes de que la aplicación tenga dirección.
- Disponibilidad: Experimental
- Evidencia: Leído del código fuente
- Referencia
Qué contiene una versión publicada
La preparación almacena salidas. Un módulo público suele llevar más de una: su JavaScript, la hoja de estilos que declara y su mapa de código fuente externo son tres salidas con tres tipos de medio y tres conjuntos de bytes, bajo una sola identidad de módulo. Un paquete lleva además recursos, como imágenes y tipografías, y una versión publicada genera documentos propios, como su documento HTML y su documento de resolución.
Cada salida almacenada es un artefacto con un resumen del contenido, un tipo de medio y un tamaño. Dos valores la nombran y no son el mismo:
| Valor | Qué identifica |
|---|---|
| Clave del recurso y consulta de opciones | Lo que se pidió: este módulo, para este destino, con estas opciones |
| Resumen del contenido | Los bytes que lo responden |
La misma identidad puede contener bytes distintos en otro contexto de dependencias, y los mismos bytes pueden responder a más de una identidad: el alias de un paquete de otro registro, o un módulo alcanzado desde dos destinos. La lista informa de ambos, para que ninguno se confunda con el otro.
El inventario y las salidas son listas distintas
El inventario es lo que la aplicación alcanza: una fila por cada módulo, hoja de estilos o recurso que trazó el análisis, con el estado de ese elemento. Las salidas son lo que el procesamiento produjo y almacenó para esos elementos, que son más filas y otras columnas. Quien lee una versión publicada necesita ambas: el inventario dice si está todo lo necesario, y las salidas dicen qué hay y cómo recuperarlo.
Operaciones
| Operación | Petición | Capacidad | Reintento |
|---|---|---|---|
releases.outputs |
GET /v1/applications/{application}/releases/{release}/outputs |
application.read |
|
releases.output |
GET /v1/applications/{application}/releases/{release}/outputs/{artifact} |
application.read |
releases.outputs acepta family (module, style, map, asset o document), after y limit. Sus counts describen la versión publicada entera, no la página: cuántas salidas contiene, cuántos bytes almacenados ocupan contando una vez por artefacto, cuántas requieren autorización y cuántas identidades sirve el origen público compartido.
Una versión publicada que todavía no ha fijado sus salidas responde STATE_INVALID, no una lista vacía: una que aún no ha producido nada y otra que no produjo nada son respuestas distintas.
Tres lugares, y no son intercambiables
Cada salida informa de dónde se puede recuperar.
| Lugar | A quién responde | Cuándo está presente |
|---|---|---|
retrieval.authorized |
Un miembro de la organización que admita la capacidad de la operación | Siempre |
retrieval.shared |
Cualquiera, en el origen de entrega compartido | Solo para una identidad que sirva el índice público compartido |
retrieval.host |
Quien admita la política de acceso de la aplicación | Solo cuando hay una dirección enlazada a la aplicación |
El origen compartido sirve identidades públicas, así que una salida de una aplicación privada y un mapa de código fuente restringido nunca aparecen ahí. Leer esta lista no recupera bytes, y ninguna recuperación crea trabajo de compilación: un fallo de búsqueda es una respuesta, nunca una compilación.
Recuperar una salida antes de que la aplicación tenga dirección
releases.output es la ruta que no necesita host de aplicación. Lee el almacén y responde los bytes con el tipo de medio con el que se almacenaron, su tamaño y un validador fuerte "sha256-…"; If-None-Match responde 304, y HEAD responde la misma descripción sin cuerpo. Una salida registrada cuyos bytes el almacén no puede leer es UNAVAILABLE, nunca un fallo de búsqueda.
Es un origen de gestión, que guarda la sesión de quien lo está leyendo, así que nunca deja que un navegador ejecute lo que almacena:
Content-Disposition: attachment, para que una navegación descargue en vez de representar;X-Content-Type-Options: nosniff, para que el tipo sea el registrado y no una conjetura;Content-Security-Policy: default-src 'none'; sandbox, para que un documento HTML o un script almacenado no tenga los poderes de este origen;Cache-Control: no-storeyVary: Cookie, porque la respuesta depende de quién pregunta.
La aplicación de administración del CDN usa esta ruta para su panel Salidas: recupera los bytes, muestra el texto como texto y una imagen como imagen bajo su tipo registrado, y ofrece como descarga la copia que ya tiene. Nunca navega a la dirección de una salida.
Errores
| Código | Cuándo |
|---|---|
UNAUTHENTICATED |
No hay sesión, o es una que este producto no acepta |
NOT_FOUND |
La aplicación, la versión publicada o la salida no existe, o pertenece a otra organización: ambas responden lo mismo |
VALIDATION_FAILED |
Un cursor o un tipo que esta lista no emite |
STATE_INVALID |
La versión publicada todavía no ha fijado sus salidas |
UNAVAILABLE |
La salida está registrada y el almacén no pudo leer sus bytes |