We recently upgraded a Web server from Oracle REST Data Services 2.10 to the latest version 17.4.1 . This might sound like jumping from the stone age to spaceships, but there have been only roughly 3 years between those two versions.
The good news is, ORDS ran fantastically stable for so long, and would have continued to do so even longer, but we wanted to use the latest and greatest features, hence the decision to upgrade.
All ORDS tests on dev/test systems have been successful, so we decided its time to upgrade our production Web server, which serves the FOEX Website, the FOEX trial instance, and others.
Today finally was the day, we upgraded 3 ORDS instances on our server and everything went fine. Everything appeared to work, all sites were displayed successfully.
Everything? At the first glance it seemed to be fine, but then we found some RESTful webservices, defined in APEX, which did not work anymore.
Instead of showing the result, ORDS presented us with an error page, just like that:
This worked just fine, right before the upgrade, now it doesn’t anymore. Other webservices (even in the same workspace/schema) did work just fine.
Long story short, after some testing and tinkering, we finally found the issue: ORDS developed a love and dependency on trailing slashes in the URI template
Above is the definition which worked just fine under ORDS 2.x, but causes an error on the current version 17.4.1. Why? The URI template misses a trailing slash. As soon as we add that slash in the definition, everything works like before.
Investigating that behavior a bit more I also found that ORDS must have developed that longing for a slash in 3.x, since apex.oracle.com running ORDS 3.10 shows the same errornous behavior.
I also reported this to the ORDS forum, since it feels like a bug to me.
Pingback: ORDS got a new love for trailing slashes - SSWUG.ORG