Base64Encode@1
Der Node Base64Encode@1 konvertiert Zeichenkettenwerte in das Base64-kodierte Format. Er kodiert Zeichenketten mit der UTF-8-Zeichenkodierung und ist unverzichtbar für die Datenserialisierung, sichere Übertragung und Vorbereitung von Daten für APIs oder Speichersysteme, die das Base64-Format erfordern.
Adapter-Voraussetzungen
- Allgemeine Verfügbarkeit: Alle Adapter unterstützen diesen Node-Typ.
Node-Konfiguration
Für die Felder path, targetPath, targetValueWriteMode und targetValueKind siehe Überblick.
transformations:
- type: Base64Encode@1
path: $.users[*] # Path to objects containing string data
sourcePath: $.password # Path to string value to encode
targetPath: $.encodedPassword # Path where encoded value will be stored
Parameter
Erforderliche Parameter
| Parameter | Typ | Beschreibung |
|---|---|---|
path | string | JSONPath zu den Objekten, die die zu kodierenden Zeichenkettendaten enthalten |
sourcePath | string | Relativer Pfad zum Zeichenkettenwert innerhalb jedes Objekts |
targetPath | string | Relativer Pfad, unter dem der Base64-kodierte Wert gespeichert wird |
Kodierungsprozess
Der Node führt die Base64-Kodierung in diesen Schritten durch:
- Objektauswahl: Verwendet
path, um Objekte auszuwählen, die Zeichenkettendaten enthalten - Wertabruf: Extrahiert den Zeichenkettenwert aus
sourcePath - UTF-8-Konvertierung: Konvertiert die Zeichenkette in ein UTF-8-Byte-Array
- Base64-Kodierung: Konvertiert das Byte-Array in eine Base64-Zeichenkette
- Ergebnisspeicherung: Speichert die kodierte Zeichenkette unter
targetPath
Wertbehandlung
- Null-Erhaltung: Null-Werte werden ohne Kodierung beibehalten
- Typkonvertierung: Nicht-Zeichenketten-Werte werden vor der Kodierung in Zeichenketten konvertiert
- Leere Zeichenketten: Leere Zeichenketten werden kodiert (ergeben eine leere Base64-Zeichenkette)
- UTF-8-Kodierung: Alle Zeichenketten werden mit dem UTF-8-Zeichensatz kodiert
Beispiele
Beispiel 1: Benutzerpasswörter kodieren
Klartext-Passwörter in das Base64-Format kodieren:
transformations:
- type: Base64Encode@1
path: $.users[*]
sourcePath: $.password
targetPath: $.encodedPassword
Eingabe:
{
"users": [
{ "id": "user1", "password": "password123" },
{ "id": "user2", "password": "mySecret456" }
]
}
Ausgabe:
{
"users": [
{ "id": "user1", "password": "password123", "encodedPassword": "cGFzc3dvcmQxMjM=" },
{ "id": "user2", "password": "mySecret456", "encodedPassword": "bXlTZWNyZXQ0NTY=" }
]
}
Beispiel 2: API-Schlüssel kodieren
API-Schlüssel zur sicheren Speicherung in das Base64-Format konvertieren:
transformations:
- type: Base64Encode@1
path: $.services[*]
sourcePath: $.apiKey
targetPath: $.encodedApiKey
Eingabe:
{
"services": [
{ "name": "API1", "apiKey": "secret-key-123" },
{ "name": "API2", "apiKey": "another-secret" }
]
}
Ausgabe:
{
"services": [
{ "name": "API1", "apiKey": "secret-key-123", "encodedApiKey": "c2VjcmV0LWtleS0xMjM=" },
{ "name": "API2", "apiKey": "another-secret", "encodedApiKey": "YW5vdGhlci1zZWNyZXQ=" }
]
}
Beispiel 3: Konfigurationswerte kodieren
Sensible Konfigurationsparameter kodieren:
transformations:
- type: Base64Encode@1
path: $.configuration.secure[*]
sourcePath: $.value
targetPath: $.encodedValue
Eingabe:
{
"configuration": {
"secure": [
{ "key": "db_password", "value": "database_pass" },
{ "key": "api_token", "value": "token_123456" }
]
}
}
Ausgabe:
{
"configuration": {
"secure": [
{ "key": "db_password", "value": "database_pass", "encodedValue": "ZGF0YWJhc2VfcGFzcw==" },
{ "key": "api_token", "value": "token_123456", "encodedValue": "dG9rZW5fMTIzNDU2" }
]
}
}
Beispiel 4: Dateiinhalt kodieren
Textinhalt für Data-URI oder API-Übertragung vorbereiten:
transformations:
- type: Base64Encode@1
path: $.files[*]
sourcePath: $.textContent
targetPath: $.base64Content
Eingabe:
{
"files": [
{ "name": "readme.txt", "textContent": "Hello World!" },
{ "name": "config.json", "textContent": "{\"setting\": \"value\"}" }
]
}
Ausgabe:
{
"files": [
{ "name": "readme.txt", "textContent": "Hello World!", "base64Content": "SGVsbG8gV29ybGQh" },
{ "name": "config.json", "textContent": "{\"setting\": \"value\"}", "base64Content": "eyJzZXR0aW5nIjogInZhbHVlIn0=" }
]
}
Beispiel 5: Verschiedene Datentypen behandeln
Verschiedene Datentypen kodieren (automatisch in Zeichenketten konvertiert):
transformations:
- type: Base64Encode@1
path: $.items[*]
sourcePath: $.data
targetPath: $.encodedData
Eingabe:
{
"items": [
{ "id": 1, "data": "hello" },
{ "id": 2, "data": 12345 },
{ "id": 3, "data": true },
{ "id": 4, "data": null }
]
}
Ausgabe:
{
"items": [
{ "id": 1, "data": "hello", "encodedData": "aGVsbG8=" },
{ "id": 2, "data": 12345, "encodedData": "MTIzNDU=" },
{ "id": 3, "data": true, "encodedData": "VHJ1ZQ==" },
{ "id": 4, "data": null, "encodedData": null }
]
}
Beispiel 6: JSON-Daten kodieren
Strukturierte Daten als Base64-Zeichenketten kodieren:
transformations:
- type: Base64Encode@1
path: $.requests[*]
sourcePath: $.payload
targetPath: $.encodedPayload
Eingabe:
{
"requests": [
{ "url": "/api/users", "payload": "{\"name\":\"John\",\"age\":30}" },
{ "url": "/api/orders", "payload": "{\"items\":[\"A\",\"B\"]}" }
]
}
Ausgabe:
{
"requests": [
{ "url": "/api/users", "payload": "{\"name\":\"John\",\"age\":30}", "encodedPayload": "eyJuYW1lIjoiSm9obiIsImFnZSI6MzB9" },
{ "url": "/api/orders", "payload": "{\"items\":[\"A\",\"B\"]}", "encodedPayload": "eyJpdGVtcyI6WyJBIiwiQiJdfQ==" }
]
}
Beispiel 7: Für E-Mail-Header kodieren
Text für die E-Mail-Header-Kodierung vorbereiten:
transformations:
- type: Base64Encode@1
path: $.emails[*]
sourcePath: $.subject
targetPath: $.encodedSubject
Eingabe:
{
"emails": [
{ "to": "user@example.com", "subject": "Héllo Wörld with Special Chärs" },
{ "to": "admin@example.com", "subject": "日本語のタイトル" }
]
}
Ausgabe:
{
"emails": [
{ "to": "user@example.com", "subject": "Héllo Wörld with Special Chärs", "encodedSubject": "SMOpbGxvIFfDtnJsZCB3aXRoIFNwZWNpYWwgQ2jDpHJz" },
{ "to": "admin@example.com", "subject": "日本語のタイトル", "encodedSubject": "65e5672c8a9e44gu44ov44kk44oi44or" }
]
}
Anwendungsfälle
- Anmeldedaten speichern: Sensible Daten für Konfigurationsdateien kodieren (nicht zur Sicherheit)
- API-Übertragung: Binärdaten für JSON-/XML-APIs vorbereiten
- Data-URIs: Data-URIs zum Einbetten von Inhalten in Webseiten erstellen
- Datei-Upload: Dateiinhalte für API-Payloads kodieren
- E-Mail-Header: Nicht-ASCII-Zeichen in E-Mail-Headern kodieren
- Konfigurationsverschleierung: Konfigurationswerte verschleiern (nicht zur Sicherheit)
- Datenserialisierung: Binärdaten für textbasierte Protokolle vorbereiten
Fehlerbehandlung
Der Node löst Fehler aus, wenn:
- Der Eingabe-Data-Context null ist
- JSONPath-Ausdrücke ungültig sind
Hinweise zum Verhalten
- UTF-8-Kodierung: Alle Zeichenketten werden vor der Base64-Kodierung in UTF-8-Bytes konvertiert
- Null-Sicherheit: Null-Werte werden beibehalten, ohne Fehler zu verursachen
- Typkonvertierung: Nicht-Zeichenketten-Werte werden vor der Kodierung mit ToString() konvertiert
- Speichereffizient: Die Verarbeitung erfolgt pro Objekt, ohne alle Daten auf einmal zu laden
- Standardkodierung: Verwendet die standardmäßige Base64-Kodierung (RFC 4648)
Sicherheitsüberlegungen
- Keine Verschlüsselung: Base64 ist eine Kodierung, keine Verschlüsselung – sie bietet keine Sicherheit
- Nur Verschleierung: Nur zur Kompatibilität des Datenformats verwenden, nicht zum Verbergen sensibler Daten
- Umkehrbar: Die Base64-Kodierung ist leicht umkehrbar und sollte nicht zur Sicherheit herangezogen werden
- Echte Sicherheit: Verwenden Sie echte Verschlüsselungsmethoden zum Schutz sensibler Daten
Hinweise zur Performance
- Effiziente Verarbeitung: Verarbeitet Objekte einzeln für eine bessere Speichernutzung
- Zeichenkettenkonvertierung: Nicht-Zeichenketten-Werte erfordern vor der Kodierung eine Zeichenkettenkonvertierung
- UTF-8-Overhead: Die UTF-8-Kodierung kann die Byte-Anzahl für einige Zeichensätze erhöhen
- Base64-Vergrößerung: Die Base64-Kodierung erhöht die Datengröße um etwa 33 %
Verwandte Nodes
- Base64Decode@1: Base64-Zeichenketten zurück in die ursprünglichen Werte dekodieren
- ConvertDataType@1: Zwischen verschiedenen Datentypen konvertieren
- FormatString@1: Zeichenketten vor der Kodierung formatieren