× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



I was unsuccessful in what I was trying so let me post what I'm trying to
do so someone can comment on if I'm taking the correct approach. As stated
earlier I am using IWS.

I have an API /web/services/claims If I call this I ant return all
claims. If I want all claims for an individual store I would call
/web/services/claims/188 which would return all claims for store 188. But
I also want to be able to filter the results by warehouse and/or status so
I'm thinking these would be injected(?) into the query string
/web/services/claims/188/?whid=95&stat=C.
My prototype looks like this

dcl-proc GetAllClaims export;
dcl-pi *n extproc(*dclcase);
store like(ossushpTmp.o1cus#) const;
warehouse like(ossushpTmp.o1whid) const;
stat like(ossushpTmp.o1stat) const;
claimsHdrDs_length int(10);
claimsHdrDs likeds(claimsHdrDsTmp) dim(1000) options(*varsize);
httpStatus int(10);
httpHeaders char(100) dim(10);
end-pi;

When I enter this in the wizard on Deploy New Service (step 9 of 9), on the
Methods tab I see
*Procedure name*:GetAllClaims
*HTTP **request method*:GET
*URI path template for method*:{store: \d{1,3}}
*HTTP response code output parameter*:httpStatus
*HTTP header array output parameter*:httpHeaders
*Allowed input media types*:*ALL
*Returned output media types*:*JSON
*Input parameter mappings:*
Parameter nameData typeInput sourceIdentifierDefault Value
store zoned *PATH_PARAM store *NONE
warehouse zoned *QUERY_PARAM warehouse 0
status char *QUERY_PARAM status '*NONE

This looks like what I think I'm trying to achieve.

i deploy the webservice and then call.

/web/services/claims HTTP ERROR 405 (is this because of the path
template?)
/web/services/claims/0 All claims are returned for all stores. (In the
code if the store = 0 then store is not added to the prepared statement)
/web/services/claims/188 Only claims for store 188 are returned which
is correct.
/web/services/claims/188/?warehouse=93 and
/web/services/claims/188/?warehouse=93&stat=C Both filters do not work.

I added a dump(a) just after the procedure starts and the input variables
are not set. warehouse = 000 and stat = ' '.
I thought that I only had to refer to them when they were injected(?) into
the *QUERY_PARAM.

Any and all guidance will be gladly appreciated.

Thanks,

Rob


On Wed, Jul 29, 2020 at 10:43 AM Nadir Amra <amra@xxxxxxxxxx> wrote:

Hi Rob, we are in process of updating doc so hopefully that will give
some relief. But if you get stuck, please search the mailing list and if
no answer found post your question. I try to respond when I see posts.




"WEB400" <web400-bounces@xxxxxxxxxxxxxxxxxx> wrote on 07/29/2020 08:00:35
AM:

From: Robert Rogerson <rogersonra@xxxxxxxxx>
To: "Web Enabling the IBM i (AS/400 and iSeries)"
<web400@xxxxxxxxxxxxxxxxxx>
Date: 07/29/2020 08:00 AM
Subject: [EXTERNAL] Re: [WEB400] IWS, REST and retrieving variables
from QUERY_STRING
Sent by: "WEB400" <web400-bounces@xxxxxxxxxxxxxxxxxx>

Thanks Nadir, After watching Tim's video the first option became clear.
Thanks for mentioning the second option.
I just wish I hadn't spent so much time trying to find how to do this.
I'm
not sure if I was searching for the wrong terms but now I am on the
right
path.

Thanks to everyone for the help and guidance.

Rob

On Tue, Jul 28, 2020 at 1:51 PM Nadir Amra <amra@xxxxxxxxxx> wrote:

Hi,

You have two options to getting access to query string variable. The
recommended way is to inject the query string parameter into a
parameter
automatically.

The alternative way is to pass the entire query string as an
environment
variable and within your code you would need to issue a getenv() call
and
then parse the query string variable.

Obviously, injecting an input parameter with value of query string
variable is easiest. And this method allows you to specify a default
value as well if not specified.




"WEB400" <web400-bounces@xxxxxxxxxxxxxxxxxx> wrote on 07/28/2020
08:45:55
AM:

From: Robert Rogerson <rogersonra@xxxxxxxxx>
To: "Web Enabling the IBM i (AS/400 and iSeries)"
<web400@xxxxxxxxxxxxxxxxxx>
Date: 07/28/2020 08:46 AM
Subject: [EXTERNAL] [WEB400] IWS, REST and retrieving variables from
QUERY_STRING
Sent by: "WEB400" <web400-bounces@xxxxxxxxxxxxxxxxxx>

Hi All,

I'm creating a REST webservice/api and using IWS. I'm then using
Postman
to test the webservice. All the endpoints call procedures in a
service
program..

I have an endpoint /web/server/claims which will call the RPG
procedure
GetAllClaims which returns all claims. I have tested this with
Postman
and it works correctly.

My next step is to add a filter. So I call the same endpoint but
this
time
I pass a parameter of whid. So the endpoint now becomes
/web/server/claims/?whid=93 which will call the RPG procedure
GetAllClaims
but this time I need to extract the parameter passed in the
QUERY_STRING
to
return only claims for warehouse 93.

Can someone point me to either documentation or an example of how to
specify and extract from the QUERY_STRING. I've done a lot of
searching
on
Google but I must not be searching on the correct terms because I
can't
find anything on QUERY_STRING other than that you may specify it..


--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
list
To post a message email: WEB400@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit: https://lists.midrange.com/mailman/listinfo/web400
or email: WEB400-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at https://archive.midrange.com/web400.



As an Amazon Associate we earn from qualifying purchases.

This thread ...

Follow-Ups:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.