Re: Creating a REST API with RPGLE
Brad Stone <[email protected]> Sat, 8 Oct 2022 11:53:04 -0500
| Newsgroups | gmane.comp.systems.as400.web |
|---|---|
| Message-ID | <CAAGV8Od9+U+34rvMcWDMrtCzPe1aL0yWExYw88HOpDkcCh2w8g@mail.gmail.com> |
Apache is pretty similar on all platforms. the IBM i is a little different, but honestly the one config in there is a basic one that you should be able to decipher with a little research. On Sat, Oct 8, 2022 at 10:50 AM <[email protected]> wrote: > Thanks Brad. It looks like you are pointing me to Apache which is where I > figured I would end up based on the walls that I kept running into. > > Now the next question is can you point me to a good resource on setting up > Apache? You provided the config for the server but I have no idea where > that goes. When I looked at Apache config, many of the sites that I found > assume that I knew things that I don't and consequently I was missing a key > piece that caused me to fail. I really need the "Apache config for > dummies" book. > > Us newbies are such a pain sometimes. 😊 > > As for the SQL, yes, there will definitely be safeguards in place. I just > didn’t figure it was worth the details but I appreciate your callout just > in case I didn't know better. I also learned years ago to protect the SQL > so that someone doesn't enter a screen value such as "somevalue';delete > from itemtable" to cause a multiple step statement such as > > update mytable set myfield = 'somevalue';delete from itemtable; <= If you > happen to have an itemtable, it is now empty. > > > -----Original Message----- > From: WEB400 <[email protected]> On Behalf Of Brad Stone > Sent: Saturday, October 8, 2022 9:43 AM > To: Web Enabling the IBM i (AS/400 and iSeries) <[email protected] > > > Subject: Re: [WEB400] Creating a REST API with RPGLE > > I would suggest outputting JSON as it's more generic and most applications > can read it. > > Here's a simple program and HTTP config that will do what you want using > RPG and YAJL.. you just need to change the $Data subroutine to run your SQL > statement, then build the JSON as it reads the results from the command: > > https://fieldexit.com/forum/display?threadid=522 > > PS, passing in straight SQL can be very dangerous in the wrong hands, so I > would put some sort of checking so there's not something like delete from > lib.file passed in. > > On Fri, 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. > > > -- > 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.