Re: Creating a REST API with RPGLE

Jay Vaughn <[email protected]> Sat, 8 Oct 2022 16:06:14 -0400
Newsgroups gmane.comp.systems.as400.web
Message-ID <[email protected]>
Debatable

Apache
Rpg
Sql


Jay

> On Oct 8, 2022, at 4:00 PM, Brad Stone <[email protected]> wrote:
> 
> Because if the data resides on the IBM i... RPG and the Apache server with
> YAJL are really the easiest way to do it.  :)
> 
>> On Sat, Oct 8, 2022 at 1:33 PM Richard Schoen <[email protected]>
>> wrote:
>> 
>> Out of curiosity is there a reason you can't still use C# ?
>> 
>> Web apps and web apis done in C# and hosted on Windows or Linux are quite
>> usable as well and can interact with your RPG via ODBC database calls and
>> the IBMi Access ODBC driver.
>> 
>> You also have things like Java, Python, Node and PHP available.
>> 
>> Another interesting option if you want to create an RPG web service is
>> ILEAstic.
>> 
>> You have options.
>> 
>> Regards,
>> Richard Schoen
>> Web: http://www.richardschoen.net
>> Email: [email protected]
>> 
>> ----------------------------------------------------------------------
>> 
>> message: 1
>> date: Fri, 7 Oct 2022 20:54:11 -0400
>> from: [email protected]
>> subject: [WEB400] Creating a REST API with RPGLE
>> 
>> 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.