info@selectline.de | +49 391 5555-080 | SelectLine – steht jedem Unternehmen

Sonderzeichen in der URL

Die URL setzt sich aus folgenden Elementen zusammen:

    https://API-Adresse:443/Articles/123456?additionalFields=4
    \_____/\___________/\_/\______________/ \________________/
       A         B       C        D                 E

        A: Protokoll     
        B: Host    
        C: Port     
        D: Pfad         
        E: Abfrage
            
'Protokoll', 'Host' und 'Port' werden durch die Einrichtung im Mobile Manager festgelegt. Der 'Pfad' gibt die Route mit den entsprechend gefüllten Parametern an. 'Abfrage' ist der Abschnitt hinter dem Fragezeichen '?', welcher meist optionale Parameter mitgibt.

Abfrage

Für die Abfrage erfolgt bereits die Encodierung. Diese übernimmt im Normalfall der Client selbst, sodass man hier nichts selbst encodieren muss. Mit folgender Abfrage kann die Suche, z.B. nach Artikeln, eingeschränkt werden.

Abschnitt der URL Beschreibung
GET Http Methode
/Articles/Stock Route
? Einleitung für eine Abfrage
searchTerm=123/456 Abfrage

In der folgenden Abfrage wird der Slash '/' mit % 2F encodiert.
GET /Articles/Stock?searchTerm=123/456

Diese Abfrage wird zu:
GET /Articles/Stock?searchTerm=123%2F456

Pfad

Im 'Pfad' werden Sonderzeichen von der API dekodiert, jedoch nicht encodiert. Dieses muss vom Aufrufer manuell erfolgen!
Das bedeutet, dass zum Beispiel für die folgenden Route der, zwischen den Ziffern befindliche, Slash '/' nicht encodiert wird.
GET /Articles/123/456

Dieses löst unter anderem eine Exception aus, weil der Slash '/' als Teil des Pfades interpretiert wird.

Damit auch der URL Pfad encodiert wird, muss der Aufrufer selbst die Zeichen encodieren.
Dazu werden in der SelectLine API sämtliche Parameter, die direkt in der URL angegeben werden können, decodiert.
Die Encodierung macht aus '123/456' den Wert '123~2F456'. Die Decodierung wandelt diesen Wert wieder zurück.

Im Gegensatz zu der erwähnten Abfrage werden die Parameter hierfür nicht mit dem Prozentzeichen encodiert, sondern mit der Tilde '~'.
Der Grund dafür ist, dass man in der Route der HTTP Anfrage kein Prozent angeben darf.

Im folgenden Pfad einer URL wird der Slash '/' mit ~2F encodiert.
GET /Articles/123/456

Dieser Pfad wird zu:
GET /Articles/123~2F456

Um ein nicht erlaubtes Zeichen für die SelectLine API korrekt zu encodieren, müssen folgende Schritte abgearbeitet werden:

  1. Der hexadezimale Wert des nicht erlaubten Zeichens muss aus der ASCII Tabelle ermittelt werden.
    Zum Beispiel: Der hexadezimale Wert für Slash '/' ist 2F
  2. Dem ermittelten hexadezimalen Wert die Tilde '~' voranstellen.
    Zum Beispiel: ~2F
  3. Das nicht erlaubte Zeichen durch die gebildete neue Zeichenkette ersetzen.
    Zum Beispiel: 123~2F456

Die Tilde '~' darf daher nicht als Zeichen in Datensatzschlüsseln verwendet werden, wenn die Datensatzschlüssel über die API zum Einsatz kommen sollen.
Zu beachten ist, dass andere Sonderzeichen wie z.B. Prozent '%' ohne Encodierung und Decodierung ein ungewünschtes Verhalten auslösen.
Diese Sonderzeichen könnten z.B. als Teil der URL eingestuft werden.

Folgende Zeichen werden derzeit in der API decodiert:

Zeichen Beschreibung Hexadezimale Werte
/ Schrägstrich (Slash) 2F
\ umgekehrter Schrägstrich (Backslash) 5C
% Prozent 25
# Raute 23
" Anführungszeichen 22
& Kaufmännisches Und 26
? Fragezeichen 3F
= Gleichheitszeichen 3D
Leerzeichen 20
! Ausrufezeichen 21
* Sternchen 2A
$ Dollarzeichen 24
' einfaches Anführungszeichen 27
( runde Klammer auf 28
) runde Klammer zu 29
+ Plus 2B
: Doppelpunkt 3A
; Semikolon 3B
@ At 40
[ eckige Klammer auf 5B
] eckige Klammer zu 5D
, Komma 2C
. Punkt 2E
Ä Ä C4
Ö Ö D6
Ü Ü DC
Γ Gamma 393
Δ Delta 394
Θ Theta 398
Λ Lambda 39B
Ξ Xi 39E
Π Pi 3A0
Σ Sigma 3A3
Φ Phi 3A6
Ψ Psi 3A8
Ω Omega 3A9