How to Invoke an External REST API from a Cloud Function
From creating your first cloud function, we now show you how you can create a function that invokes a REST API from a third party.
Join the DZone community and get the full member experience.
Join For FreeIn a previous blog post, I showed how to create your first cloud function (plus a video). It's very likely that your cloud function will need to invoke an external REST API. The following tutorial will show you how to create such a function (it's very easy).
- Sign into an IBM Cloud account
- Click Catalog
- Remove the label:lite filter and type
- Click on Functions box
- Click the Start Creating button
- Click Create Action
- For Action Name, enter "ajoke" and click the Create button. A new cloud function will be created with Hello World message
- Replace the function code with the following code which invokes a 3rd party REST API which returns a random joke:
var request = require("request"); function main(params) { var options = { url: "https://api.icndb.com/jokes/random", json: true }; return new Promise(function (resolve, reject) { request(options, function (err, resp) { if (err) { console.log(err); return reject({err: err}); } return resolve({joke:resp.body.value.joke}); }); }); }
- The code is simple. It uses the request Node.js package to connect to an external REST API
- The external REST API returns a random joke
- A JavaScript Promise is used for invoking the REST API
- At the end, the cloud function returns a response in JSON format
- Now click the Save button to save the code. Once the code is saved, the button will change to Invoke. Click the button to invoke the function. In the right-hand panel you should see output with a random joke:
{ "joke": "Project managers never ask Chuck Norris for estimations... ever." }
This is how it looks inside the IBM Cloud Functions editor:
Of course, you can also build and test a cloud function using the CLI. I'll cover that in another blog post.
For now, let's expose this cloud function as a REST API so we can invoke it outside the console. In fact, you will be able to invoke it directly from the browser once we make it a Web Action.
- On the left-hand side, click Endpoints
- Check Enable as Web Action and click Save
- Copy the URL and enter into a browser's address bar
Here is how it looks in Firefox:
That was easy, right?
In this blog post, you learned how to create a cloud function which invokes an external (3rd party) API. It's very likely that even the simplest application will need to get data from an external API so this a good example/template to have.
Published at DZone with permission of Max Katz, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments