× 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.



Thanks Tim. The book is in the mail...

I'm taking an online course thru Udemy called Modern JavaScript: From the
Beginning...by Brad Traversy.

One of the exercises is creating a library for HTTP requests (which is
included along with my main .js file on the .html page) and that's what
I'm using.

EasyHTTP.js

class EasyHTTP {
// Make an HTTP GET Request
async get(url) {
const response = await fetch(url);
const resData = await response.json();
return resData;
}

// Make an HTTP POST Request
async post(url, data) {
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-type': 'application/json'
},
body: JSON.stringify(data)
});

const resData = await response.json();
return resData;
}

// Make an HTTP PUT Request
async put(url, data) {
const response = await fetch(url, {
method: 'PUT',
headers: {
'Content-type': 'application/json'
},
body: JSON.stringify(data)
});

const resData = await response.json();
return resData;
}

// Make an HTTP DELETE Request
async delete(url) {
const response = await fetch(url, {
method: 'DELETE',
headers: {
'Content-type': 'application/json'
}
});

const resData = await 'Resource deleted...';
return resData;
}
}

Main.js

document.getElementById('start-sweeper').addEventListener('click',
startSweeper);
document.getElementById('stop-sweeper').addEventListener('click',
stopSweeper);

function startSweeper () {
const data = {Id: 'WIEHJ', Action: 'start'};

// Send the request to start the sweeper
http.post('[1]http://myserver/rest/WIEHJpst/', data)
.then(data => console.log(data))
.catch(err => console.log(err));
}

function stopSweeper() {
const data = {Id: 'WIEHJ', Action: 'stop'}

// Send the request to end the sweeper
http.post('[2]http://myserver/rest/WIEHJpst/', data)
.then(data => console.log(data))
.catch(err => console.log(err));
}

So I'm using a POST with a promise. Thanks for the advise. I still have
a ways to go to complete the course but I wanted to try out some of what
I've learned so far. And thanks for the mention of the book. I'm sure it
will help clarify some of my other questions.

Thanks,

Rob

On 8/3/2018 4:14 AM, Tim Fathers wrote:

If it's really no more than about 10 seconds then either way is probably
ok, but having the web-service not return until the job has actually
ended is probably the easiest. For longer running back-end tasks then
it's more normal in the web world to return an HTTP response of 202
(Accepted) and get the client to poll periodically to check the status.
Along with a 202 status, the API can also return information about how
the client should request the status and even an estimated completion
time so that you can tell the client "I expect this process to take
about 10 seconds", so that the client can more intelligently poll.
I'm not familiar with what method you're using to create your
server-side code, but it looks like you're using "GET" with an "action"
query parameter like this; GET /myserver/myjob?action=start, which is
quite an old fashioned way of writing a web-service and not really
recommended these days. What you're doing is fine for a bit of hacking
and learning, but you should look at using a more RESTful API if you
want to do it "properly". I only mention this because when I started
out I headed down many blind alleys, learning stuff that I subsequently
found out was out of date, deprecated or just plain wrong.
One final thing, I found the book "RESTFul Webservices Cookbook"
by Sabbu Allamarju really useful at answering the sort of practical
question you asked. Obviously it's more geared towards writing and using
RESTful APIs, and if you're just getting started it might be a little
advanced, but it does help answer many of the questions that arise when
you're coming from the stateful green-screen world to the stateless
web-service world.
Tim.

--------------------------------------------------------------------------

From: WEB400 [3]<web400-bounces@xxxxxxxxxxxx> on behalf of Robert
Rogerson [4]<rogersonra@xxxxxxxxx>
Sent: 02 August 2018 22:08
To: [5]web400@xxxxxxxxxxxx
Subject: [WEB400] Web service advice...

Hi all, first let me state that I'm just learning about web services
using Scott Klement's pdf's.

What I'm trying to accomplish is this. I have a NEP on the V7R1 box
which I'm trying to control from the web.

As a first step I have the html and javascript working to call a web
service to start and stop the job.

What I want to do now is display the status of the job on the page. So
(assuming the job is stopped) when the page is first displayed I would
call my web service and pass action=status which would return stopped
and I would display Inactive on the page.

If I click the start button the web service is called with action=start
and the job is started and the page is updated to Active.

Where I'm looking for advice is when I click the stop button. It may
take 10 seconds for the job to actually end. So between the time that I
call the web service to end the job and when the job is actually ended I
want to display Ending... on the page.

So I'm thinking of two approaches.

Call the web service with action=status in a loop until the status is
ended. Only the update the page to Inactive.

Or when I call the web service to end the job I update the page with
Ending... and do not return a response from the RPG program until the
job is actually ended.

Does anyone have any advise on how to approach this issue.

Thanks,

Rob

--
This is the Web Enabling the IBM i (AS/400 and iSeries) (WEB400) mailing
list
To post a message email: [6]WEB400@xxxxxxxxxxxx
To subscribe, unsubscribe, or change list options,
visit:
[7]https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&amp;data=02%7C01%7C%7C52136dd96ff942f8e44708d5f8b3d1f8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688373555483961&amp;sdata=8V6m2FQKKozRc%2BGRGObU8SuEJh56qBC6Rg14ztczkBg%3D&amp;reserved=0
or email: [8]WEB400-request@xxxxxxxxxxxx
Before posting, please take a moment to review the archives
at
[9]https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&amp;data=02%7C01%7C%7C52136dd96ff942f8e44708d5f8b3d1f8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688373555483961&amp;sdata=l8hRUoqMPLtj0ibpjvCw%2FRc%2BB9CshM69AZOFGJl2unI%3D&amp;reserved=0.

References

Visible links
1. http://myserver/rest/WIEHJpst/
2. http://myserver/rest/WIEHJpst/
3. mailto:web400-bounces@xxxxxxxxxxxx
4. mailto:rogersonra@xxxxxxxxx
5. mailto:web400@xxxxxxxxxxxx
6. mailto:WEB400@xxxxxxxxxxxx
7. https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Flists.midrange.com%2Fmailman%2Flistinfo%2Fweb400&amp;data=02%7C01%7C%7C52136dd96ff942f8e44708d5f8b3d1f8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688373555483961&amp;sdata=8V6m2FQKKozRc%2BGRGObU8SuEJh56qBC6Rg14ztczkBg%3D&amp;reserved=0
8. mailto:WEB400-request@xxxxxxxxxxxx
9. https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Farchive.midrange.com%2Fweb400&amp;data=02%7C01%7C%7C52136dd96ff942f8e44708d5f8b3d1f8%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C636688373555483961&amp;sdata=l8hRUoqMPLtj0ibpjvCw%2FRc%2BB9CshM69AZOFGJl2unI%3D&amp;reserved=0

As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

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.