You're welcome!
The very short story, below....for the longer story, here's a good resource
https://restfulapi.net/
In your example below, there is a resource called "posts" (presumably a list of blog posts or whatever). You can do the following operations on this resource:
GET (get a single post [specifying the ID] or a list of posts [no ID specified])
POST (add a new post*)
PUT (add a new post or change if it exists*)
PATCH (change a post*)
DELETE (delete a post)
*these are not always implemented this way, see
https://restfulapi.net/rest-put-vs-post/
So, if you want to get a list of all posts, you do:
GET /posts
If you want a specific post, with say ID 1, you do
GET /posts/1
If you wish to add a post then you do the following. Note that *no* resource id is specified as it makes no sense, you don't yet have a resource id, you'll get on back form the server when it's created :
POST /posts
etc. etc.
I have an example here with might also be of some help to you
https://github.com/fathert/json-rpg-example/blob/master/open-weather.sqlrpgle
Tim.
________________________________
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> on behalf of Darren Strong <darren@xxxxxxxxx>
Sent: 17 November 2020 14:40
To: Midrange Systems Technical Discussion <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: RE: SQL REST HTTPPOSTCLOB error 38000
Thank you a bunch. I'm able to prove the HTTPPOSTCLOB can work in my program now. So, I have a basis to add more functions when I get a production APIKey. I admit that I don't understand the changes you made to the URL. I'm still in "Hello World" programming level with this REST API stuff. Thanks again.
-----Original Message-----
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> On Behalf Of Tim Fathers
Sent: Tuesday, November 17, 2020 4:37 AM
To: midrange-l General Questions (midrange-l@xxxxxxxxxxxxxxxxxx) <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: SQL REST HTTPPOSTCLOB error 38000
CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.
Ah, I missed the "/1" on the end of the POST URL, which is why it didn't work. As POST creates a new resource under /posts, it should not specify an ID in the URL, so:
select *
from table(systools.HTTPPOSTCLOBVERBOSE('
https://jsonplaceholder.typicode.com/posts','', '')) x ;;
Tim.
________________________________
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> on behalf of Tim Fathers <tim@xxxxxxxxxxxxx>
Sent: 16 November 2020 22:39
To: midrange-l General Questions (midrange-l@xxxxxxxxxxxxxxxxxx) <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: Re: SQL REST HTTPPOSTCLOB error 38000
Hi Darren,
There seems to be an issue with the API you're using as POST doesn't work via Postman either, PUT does work though. Using the VERBOSE version of SQL functions is a better bet as you get a bit more information about what happened in the returned header.
select *
from table(systools.HTTPPUTCLOBVERBOSE('
https://jsonplaceholder.typicode.com/posts/1','', '')) x ;;
Tim.
________________________________
From: MIDRANGE-L <midrange-l-bounces@xxxxxxxxxxxxxxxxxx> on behalf of Darren Strong <darren@xxxxxxxxx>
Sent: 16 November 2020 21:48
To: midrange-l General Questions (midrange-l@xxxxxxxxxxxxxxxxxx) <midrange-l@xxxxxxxxxxxxxxxxxx>
Subject: SQL REST HTTPPOSTCLOB error 38000
I've identified a test REST API site that I can use to experiment with, before I start hammering the production site I have in mind. I'm able to use the HTTPGETCLOB, because the site doesn't really need a request body, but, for production, I'm going to need to pass a request, so, I figure I need to use HTTPPUTCLOB.
So, anyway, I'm using the following bit of code, and I'm getting an error back as follows. Does anyone know what I'm doing wrong?
//**************************************************************
dcl-proc $TestAPI;
//
//**************************************************************
dcl-s URL varchar(2048);
dcl-s hdr varchar(10000);
dcl-s Request varchar(5000);
dcl-s Response varchar(5000);
//************
URL='
http://jsonplaceholder.typicode.com/todos/1';
hdr=' ';
Request=' ';
exec sql set :Response=systools.HTTPPOSTCLOB(
:url,:hdr,:Request);
return;
end-proc;
Error:
Message ID . . . . . . : CPF503E Severity . . . . . . . : 30
Message type . . . . . : Sender copy
Date sent . . . . . . : 11/16/20 Time sent . . . . . . : 15:13:17
Message . . . . : User-defined function error on member QSQPTABL.
Cause . . . . . : An error occurred while invoking user-defined function
HTTPPOSTCLOB in library SYSTOOLS. The error occurred while invoking the
associated external program or service program B2RESTUDF: in library
SYSTOOLS.D, program entry point or external name
com.ibm.db2.rest.DB2UDFWrapper.httpPostClob, specific name HTTPP00013. The
error occurred on member QSQPTABL file QSQPTABL in library QSYS2. The error
code is 1. The error codes and their meanings follow:
1 -- The external program or service program returned SQLSTATE 38000. The
text message returned from the program is:
██SYSTOOLS.HTTPPOSTCLOB██HTTPP00013██Premature end of file. .
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list
To post a message email: MIDRANGE-L@xxxxxxxxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
https://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
https://archive.midrange.com/midrange-l.
Please contact support@xxxxxxxxxxxxxxxxxxxx for any subscription related questions.
Help support midrange.com by shopping at amazon.com with our affiliate link:
https://amazon.midrange.com
As an Amazon Associate we earn from qualifying purchases.