Referencia de Allure Reqwest
Esquema del adjunto
Cada intercambio HTTP se registra como un adjunto de intercambio HTTP con tipo de contenido application/vnd.allure.http+json y extensión de archivo .httpexchange. El esquema se comparte entre las integraciones de captura HTTP de Allure (allure_rust_commons::HttpExchange); las tablas siguientes listan cada campo que admite el tipo compartido, y señalan cuáles realmente rellena allure-reqwest — varios existen solo para otras integraciones más completas y siempre están ausentes en un intercambio capturado por reqwest.
El objeto raíz:
| Campo | Tipo | ¿Rellenado por allure-reqwest? |
|---|---|---|
schemaVersion | 1 | Siempre 1. |
start | number | Siempre — marca de tiempo Unix en milisegundos cuando se inició la solicitud. |
stop | number | Siempre — marca de tiempo Unix en milisegundos cuando se recibió la respuesta o el error. |
request | object | Siempre. Ver Request. |
response | object | Presente cuando se recibió una respuesta. Ver Response. |
error | object | Presente cuando la solicitud falló. Ver Error. |
A diferencia de otras integraciones HTTP de Allure, un estado HTTP que no sea 2xx/3xx no es un error por sí mismo: reqwest no trata los 4xx/5xx como un fallo, así que allure-reqwest tampoco lo hace — obtienes una response normal sin error. error solo está presente en fallos de transporte (errores de conexión, tiempos de espera) o un fallo al leer el cuerpo de la respuesta.
Request
| Campo | Tipo | ¿Rellenado por allure-reqwest? |
|---|---|---|
method | string | Siempre — método HTTP, p. ej. "POST". |
url | string | Siempre — la URL de solicitud resuelta, incluyendo los parámetros de consulta sin redactar. |
httpVersion | string | Siempre — p. ej. "HTTP/1.1". |
headers | {name, value}[] | Presente cuando la solicitud tiene encabezados, tras la redacción. |
query | {name, value}[] | Presente cuando la URL tiene parámetros de consulta, tras la redacción. |
body | object | Presente cuando la captura del cuerpo de la solicitud está habilitada (predeterminado) y el cuerpo está disponible como bytes en memoria. Ver Body. |
cookies | Cookie[] | Nunca — allure-reqwest no analiza el encabezado Cookie en cookies estructuradas. |
trailers | {name, value}[] | Nunca. |
WARNING
Un cuerpo de solicitud construido a partir de un stream (cualquier caso en el que reqwest::Body::as_bytes() devuelva None — por ejemplo, un cuerpo construido a partir de un futures::Stream) simplemente no se captura: body está simplemente ausente del adjunto, sin marcador de posición ni indicación de que existiera un cuerpo. Solo se capturan los cuerpos en memoria (&str, String, Vec<u8>, Bytes, formularios y similares).
Response
| Campo | Tipo | ¿Rellenado por allure-reqwest? |
|---|---|---|
status | number | Siempre. |
statusText | string | Siempre, cuando el estado tiene una frase de motivo canónica (p. ej. "Created" para 201). |
httpVersion | string | Siempre. |
headers | {name, value}[] | Presente cuando la respuesta tiene encabezados, tras la redacción. |
body | object | Presente solo cuando la captura del cuerpo de la respuesta está habilitada explícitamente (ver Configuración) y el cuerpo se leyó correctamente. Ver Body. |
cookies | Cookie[] | Nunca. |
trailers | {name, value}[] | Nunca. |
informationalResponses | object[] | Nunca. |
Body
| Campo | Tipo | ¿Rellenado por allure-reqwest? |
|---|---|---|
contentType | string | Presente cuando hay un encabezado Content-Type en ese lado del intercambio. |
encoding | "utf8" | "base64" | Siempre presente junto a value: "utf8" cuando los bytes capturados son UTF-8 válido, "base64" en caso contrario. |
value | string | Siempre presente junto a encoding — los bytes capturados, hasta el límite de tamaño. |
size | number | Siempre — la longitud en bytes original, sin truncar, incluso cuando value se recortó. |
truncated | boolean | Siempre — true cuando el cuerpo original era mayor que el límite configurado. |
form | {name, value}[] | Nunca — allure-reqwest no analiza los cuerpos application/x-www-form-urlencoded en campos; solo se capturan como la cadena value sin procesar. |
parts | object[] | Nunca — los cuerpos multiparte se capturan como un único value sin procesar, no divididos en partes. |
stream | object | Nunca — ver la advertencia anterior; un cuerpo en streaming no tiene ningún campo body, no un marcador de posición stream. |
Error
| Campo | Tipo | ¿Rellenado por allure-reqwest? |
|---|---|---|
name | string | Siempre — "reqwest::Error" para AllureReqwestClient, "reqwest_middleware::Error" para AllureReqwestMiddleware. |
message | string | Siempre — la salida Display del error. |
stack | string | Nunca — no existe opción para capturarla. |
AllureReqwestClient
AllureReqwestClient::new(allure: AllureFacade)— envuelve un nuevoreqwest::ClientAllureReqwestClient::with_client(client: reqwest::Client, allure: AllureFacade)— envuelve un cliente existente.with_options(options: CaptureOptions)— ver Configuración.inner() -> &reqwest::Client— el cliente envuelto.request(method, url),.get(url),.post(url),.put(url),.patch(url),.delete(url),.head(url)— devuelven unreqwest::RequestBuildernormal, igual quereqwest::Client.send(builder: RequestBuilder) -> reqwest::Result<Response>— construye y ejecuta el generador de solicitudes mientras captura el intercambio.execute(request: Request) -> reqwest::Result<Response>— ejecuta unaRequestya construida mientras captura el intercambio
Solo se capturan las solicitudes enviadas mediante .send()/.execute(). Construir una solicitud con .get()/ .post()/etc. y enviarla mediante la API normal de reqwest::RequestBuilder (evitando .send()) no se captura.
AllureReqwestMiddleware
Requiere la característica middleware.
AllureReqwestMiddleware::new(allure: AllureFacade).with_options(options: CaptureOptions)— ver Configuración
Implementa reqwest_middleware::Middleware; adjúntalo con ClientBuilder::new(reqwest::Client::new()).with(middleware).build(). Cada solicitud realizada a través del ClientWithMiddleware resultante se captura — no se necesitan cambios por llamada.