Tutorial: Verwenden der Sqids-Codierung
Nach oben zu Tutorials zu Datenbanken und LiveBindings
Dieses Tutorial zeigt, wie die Sqids-Codierung in RAD Studio verwendet wird. Sqids ist eine praktische Funktion für die Navigation in einer Datenstruktur wie einer Datenbanktabelle.
RAD Server stellt standardmäßig URLs bereit, die spezifische Informationen über die Datensätze enthalten können. So wird beispielsweise erwartet, dass ein einzelner Datensatz anhand des Primärschlüssels, häufig einer ID, identifiziert wird. Daher können Server Endpunkte mit einer ähnlichen Endung wie /customer/12345
haben.
Dies ist aus mehreren Gründen nicht ideal, angefangen bei der Tatsache, dass Sie interne Details weitergeben (die möglicherweise nicht so neutral sind wie eine Nummer), bis hin zu den potenziellen Sicherheitsauswirkungen der Offenlegung einer Datensatz-ID.
Es gibt viele Lösungen für dieses Problem, hauptsächlich eine bidirektionale Zuordnung der Datensatz-ID zu einem String. Anstatt eine eigene Lösung zu implementieren, werden wir ab RAD Studio 12.0 die Sqids-Bibliothek übernehmen.
Inhaltsverzeichnis
Was ist Sqids?
Es handelt sich um eine Open-Source-Bibliothek, die kurze IDs aus positiven Zahlen generiert (mit den Standardeinstellungen von Sqids wird beispielsweise 12345 in A6da codiert).
Außerdem erlaubt Sqids die Codierung einer oder mehrerer positiver Zahlen in einer einzigen ID. Es gibt keine Begrenzung für die Anzahl der zu codierenden Zahlen, aber es gibt eine Begrenzung für ihre Länge (je nach Implementierungssprache).
Unter Sqids FAQ (EN) erhalten Sie weitere Informationen zu Sqids.
Codebeispiel: So verwenden Sie die Sqids-Codierung
Um Sqids zu implementieren, wurde mit RAD Studio 12.0 die neue Klasse System.NetEncoding.Sqids.TSqidsEncoding eingeführt, die alle Methoden zur Verwendung von Sqids bereitstellt. So implementieren Sie diese Klasse:
- Nehmen Sie die Unit System.NetEncoding.Sqids in die
uses
-Klausel auf. - Erstellen Sie die TSqidsEncoding-Instanz mit der Methode Create.
- Codieren Sie die ID oder IDs mit der Methode Encode.
- Decodieren Sie die ID oder IDs mit einer der folgenden Methoden, je nach den Anforderungen Ihrer Anwendung:
- Sie können die TSqidsEncoding-Instanz mit der Methode Destroy freigeben.
Mit Sqids eine Anforderung an einen Webserver stellen
Es gibt zwei Möglichkeiten, mit Sqids eine Anforderung an einen Webserver zu stellen:
- Mit den oben beschriebenen Methoden manuell codieren.
- Dem Namen des Parameters TRESTRequest.ResourceSuffix ein
#
voranstellen.
Wenn im zweiten Fall eine Anforderung gesendet werden soll, deren Parametername mit #
beginnt, erstellt TRESTClient automatisch eine Instanz von TSqidsEncoding mit den Eigenschaften TRESTClient.SqidsAlphabet und TRESTClient.SqidsMinLength.
Wenn der Parametername ResourceSuffix
in einer RAD Server-Ressource mit #
beginnt, wird der Wert hingegen von Sqids decodiert. Die Konfiguration des Algorithmus basiert auf der Datei EMSServer.ini, insbesondere auf den Parametern Alphabet
und MinHashLength
:
[Server.Sqids] ;# The following options control URL parameters Sqids decoding ;# ;# Optional alphabet for Sqids decoding Alphabet= ;# Optional minimal hash length for Sqids decoding MinHashLength=0
Siehe auch
- System.NetEncoding.Sqids.TSqidsEncoding.Create
- System.NetEncoding.Sqids.TSqidsEncoding.Encode
- System.NetEncoding.Sqids.TSqidsEncoding.Decode
- System.NetEncoding.Sqids.TSqidsEncoding.DecodeSingle
- System.NetEncoding.Sqids.TSqidsEncoding.TryDecodeSingle
- System.NetEncoding.Sqids.TSqidsEncoding.DecodeToStr
- System.NetEncoding.Sqids.TSqidsEncoding.Destroy
- REST.Client.TRESTClient
- REST.Client.TRESTClient.SqidsAlphabet
- REST.Client.TRESTClient.SqidsMinLength