Decodificación Protobuf
ApiCatcher permite decodificar datos binarios Protobuf de solicitudes/respuestas HTTP/HTTPS a texto plano para facilitar su visualización y análisis.
Por defecto, ApiCatcher detecta automáticamente si el encabezado Content-Type de la solicitud/respuesta coincide con tipos de contenido Protobuf comunes como application/protobuf o application/x-protobuf. Si coincide, intentará decodificar.
private static func isProtobufContentType(_ contentType: String) -> Bool {
let ct = contentType.lowercased().trimmingCharacters(in: .whitespacesAndNewlines)
let mimeType = ct.components(separatedBy: ";").first?.trimmingCharacters(in: .whitespaces) ?? ct
return mimeType == "application/protobuf"
|| mimeType == "application/x-protobuf"
|| mimeType == "application/x-google-protobuf"
|| mimeType == "application/grpc"
|| mimeType == "application/grpc+proto"
|| mimeType == "application/protobuf+json"
|| mimeType == "x-protobuf"
}
Si el Content-Type no corresponde a los tipos anteriores, ApiCatcher no intentará decodificar automáticamente, pero puede usar la herramienta de decodificación para decodificar manualmente — haga clic en el icono "Unlock" en la tarjeta Body, cambie a "Protobuf" y luego haga clic en el botón "Decodificar".
El resultado de decodificación predeterminado tiene poca legibilidad porque no hay nombres de campos. Si tiene un archivo *.desc, puede importarlo para decodificar los nombres de los campos. Si el archivo *.desc es correcto, el resultado se convertirá al formato JSON, mucho más legible.
Aquí tiene una comparación de resultados con y sin archivo *.desc:

Importar archivos descriptores Protobuf (*.desc)
¿Qué es un archivo *.desc?
Un archivo *.desc es el resultado serializado binario de un Descriptor de Archivo Protobuf (File Descriptor), que contiene todas las estructuras de mensajes, enumeraciones, definiciones de servicios y otros metadatos definidos en los archivos Proto. Es esencial para analizar datos binarios Protobuf.
Si solo tiene archivos *.proto, necesita convertirlos a un archivo *.desc antes de poder usarlo para la decodificación Protobuf.
¿Cómo generar un archivo *.desc?
Si tiene un conjunto de archivos *.proto, puede usar la herramienta de línea de comandos protoc para generar uno o más archivos *.desc. Pasos:
1. Instalar la herramienta de línea de comandos protobuf:
brew install protobuf
2. Preparar los archivos proto:
Cree una carpeta input y copie todos los archivos *.proto en ella.
3. Ejecutar el comando de generación:
protoc --descriptor_set_out=output.desc \
--include_imports \
-I=/path/to/input \
/path/to/input/*.proto
Descripción de parámetros:
| Parámetro | Descripción |
|---|---|
--descriptor_set_out=output.desc | Especifica la ruta del archivo descriptor de salida |
--include_imports | Incluye todos los archivos import dependientes, garantizando un resultado autónomo sin dependencias adicionales |
-I=/path/to/input | Especifica la ruta de búsqueda de archivos proto (prefijo para rutas de importación) |
/path/to/input/*.proto | Los archivos proto a compilar (admite comodines) |
Después de la ejecución, se generará un archivo output.desc en el directorio actual. Transfiéralo a su teléfono e impórtelo en ApiCatcher para usarlo posteriormente.

Cuando el Body de la solicitud se puede decodificar como Protobuf, la tarjeta mostrará la sugerencia "Seleccione un archivo *.desc para decodificar nombres de campo" y proporcionará un botón de selección.
Haga clic en el botón de selección para elegir un archivo *.desc importado, y se decodificarán los nombres de los campos. También puede importar un archivo en este momento.
Los archivos importados se almacenan en caché localmente y se pueden gestionar en "Configuración → Administrador de archivos Protobuf".
