Problem mit REST API

Hallo zusammen,

ich bin gerade dabei, mich mit der neuen REST API etwas “anzufreunden”. Das ist ja eine recht komfortable Geschichte.
Leider habe ich auch gleich ein (hoffentlich kleines) Problem damit:

Ich versuche über die Operation /phonebook/ einzelne Telefonbucheinträge auszulesen (die ich später auch bearbeiten möchte). Das funktioniert wunderbar, wenn die ID des Telefonbucheintrages keinen Schrägstrich enthält.
Wenn also die ID = “Peter Mueller” ist, rufe ich per GET-Methode /services/phonebook/Peter Mueller auf und bekomme ein sauberes Ergebnis zurück.
Wenn aber die ID beispielsweise “Agentur Mueller/Huber” ist, dann funktioniert die Abfrage nicht, was höchstwahrscheinlich an dem Schrägstrich liegen dürfte. Ich habe schon einiges versucht - bis hin zur “Manipulation” der Apache-Konfiguration - kriege das Problem aber leider nicht gelöst.

Wie kann ich der REST API bzw. Mobydick (7.02.01) “beibringen” auch Telefonbuch-IDs mit Schrägstrich zu verarbeiten?

Vielen Dank schonmal für die Unterstützung.

Hallo Joerg,

Zum einen sollte die id sollte immer URL-Encoded werden, so dass aus “Agentur Mueller/Huber” “Agentur Mueller%2FHuber” wird. Zum anderen habe ich gerade deinen Test nachvollzogen, und leider einen Bug festgestellt: URLs mit encodierten / werden nicht richtig behandelt.

Ich habe hierfür bereits ein Ticket aufgenommen, ich gebe dir bescheid sobald wir das Problem beheben.

Grüße,
Jan

Hallo Jan,

vielen Dank für die Info.

Gruß
Jörg

Hallo Jörg,

im kommenden Bugfix 7.03.03 haben wir das Problem erledigt. Allerdings sind die Zusammenhänge leider recht komplex:

  1. in einem Request-Pfad
    darf laut RFC2396 kein “%2F” vorkommen. Man muss das “%” selbst durch “%25” ersetzen, somit wird aus “/” => “%2F” => “%252F” (doppeltes urlencode) 1. falls eine URI mit “%2F” beim Apache ankommt, wird diese schon verworfen bevor unser Code den Request überhaupt sieht. Dies ergibt den 404 Fehler den Du gemeldet hast.
  2. zusätzlich gab es bei uns einen Bug der das “%252F” zwar zu “%2F” decodiert hat, dann aber nicht mehr weiter zu “/”, dies ist in Version 7.03.03 behoben

Übrigens: in einem Request-Queryparameter (nach dem “?”) darf übrigens “%2F” vorkommen. Hier wäre es sogar falsch “%252F” zu verwenden.

Das liebe Web macht einige Dinge im Detail halt doch recht kompliziert :cool:

Gruß,

Thomas