1 Reply Latest reply on Sep 10, 2020 8:30 AM by SaraB

    Still running APEX based code after migrating to ORDS




      We've recently upgraded from APEX 4.2 to APEX 19.2 with that we've upgraded from ORDS 3(?) to ORDS 19.2. We had developed a suite of APIs within APEX 4.2 and as such these were part of the upgrade.


      Following upgrade to 19.2 we clicked on the 'Migrate to ORDS RESTful Services' within the APEX builder and since then have been editing the APIs through SQL Developer > REST Data Services. As part of the upgrade we had to modify a couple of APIs due to issues in the newer version of ORDS, but haven't had to make many changes.


      I now need to add to an existing GET API but these changes are not being picked up when calling the API through Postman. I've checked all the obvious things (right environment, right url) and have tested my code by changing the URI pattern slightly, so that a new handler is created and this works successfully. I have changed other APIs (we have a ping GET API that is very simple) and these changes are reflected in the response.


      If I look in the APEX builder I can still see the APEX based RESTful APIs, but they are in read-only mode and I have a suspicion that it is running the APEX based version rather than the ORDS based version. We use logger and when looking at the output in logger_logs, the MODULE and ACTION columns are different when calling this API. If I call a different API in the same suite/module, then the MODULE is the URI and the ACTION is the method e.g. module is /api/v2/relationships/ and action is POST. But if I call the API I'm trying to modify the the MODULE is the suite and the ACTION is the URI e.g. module is api.v2 and action is api/v2/user/details.


      We have a lot of APIs and I'm not sure why this one would be running the APEX based RESTful code and not the ORDS based RESTful code, or even if that is the problem. The APEX based code is read-only so I'm unable to change it to make sure that's the issue, but it seems the most obvious cause. I'm also concerned as to what other APIs may have the same problem.


      How can I check what version of the API code ORDS is using? APEX based or ORDS based.

      Is there a way to remove the APEX based code (in a safe way) so that this is never used?


      I have tried searching on this issue, but couldn't find anything relevant. I appreciate any assistance as our UAT testing of APEX 19 went really well, so we're now deploying these APIs to our production environments.


      Many thanks


        • 1. Re: Still running APEX based code after migrating to ORDS

          I have this morning run our Postman Collection that tests our APIs, this was run as part of our UAT testing and all tests passed. But I ran it this morning to check the logger output. It appears that for the majority of our APIs the module is the API suite (i.e. api.v2) and the action is the URI, there are a handful that have the module as the URI and the action is the API API method (e.g. POST).


          There doesn't appear to be a reason why they are different, we haven't modified many APIs since upgrading and more than just the ones we have modified appear to be running the ORDS based code but the majority appear to still be using the APEX based code.


          Can anyone offer any guidance or explanation to this behaviour?


          Many thanks