Re: Creating a REST API with RPGLE
Tim Rowe <timmr-r/[email protected]> Sat, 15 Oct 2022 18:50:30 +0000
| Newsgroups | gmane.comp.systems.as400.web |
|---|---|
| Message-ID | <[email protected]> |
Greetings. If you are passing in an SQL Statement… instead of pass that into an RPG program, you can instead directly create a REST API over the SQL statement, and the IWS engine will handle the packaging of the data in to JSON for you. You can see a video recording of this process here https://www.youtube.com/watch?v=Q-hp0_a6ka8 Might be an alternative . Tim Sent from my iPad On Oct 7, 2022, at 8:09 PM, [email protected] wrote: First, let me say I am trying to do something here that I have zilch experience with from the IBM i perspective. I have done this type of stuff using C#.Net on Windows but nothing on the IBM i. Yesterday was my first voyage into IBM Web Administration for i. That said, I am trying to create a REST API written in RPGLE that will return JSON data. I have looked at a lot of examples but just can't find what I am after. This needs to be modeled after some existing C#.Net REST APIs so the following requirements are not negotiable. The request needs to be a POST type. The body of the POST request needs to have two "fields". 1) Input - An SQL statement that will be used to retrieve the data. 2) Output - The results of the SQL. These results can be anything so the fields can't be predefined in the RPGLE program's parameters like they are in all of the examples that I find. There can also be multiple records so it would end up having an array in the results. I think I need a single "results" field that is pretty big and I will need to manually build the JSON for it. I tried creating a new HTTP server and deploying a service to it. I have been successful using Scott's customer lookup as a model and I have been able to do a few different things to experiment. However, I can't figure out how to handle the POST body for input or the array results in the output. One attempt was to create the following: dcl-pi *n; sql char(5000); resultSet char(50000); end-pi; The problem was that I got back a value in the resultSet that was really junked up JSON because it escaped all of the " as \". I considered trying to make the resultSet value return as plain text instead of JSON (I'm assuming I can do that somehow) but I decided before I went too far down the wrong rabbit hole, I would ask for help. Can someone help point me in a good direction? I don't mind doing a lot of web digging, I just don't really know what I need to search for to do the digging. Thanks. -- This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/web400 or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/web400 . -- This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing list To post a message email: [email protected] To subscribe, unsubscribe, or change list options, visit: https://lists.midrange.com/mailman/listinfo/web400 or email: [email protected] Before posting, please take a moment to review the archives at https://archive.midrange.com/web400.