Video 3.5 API's in Node red one. In this video we will learn how to call an API using node red Okay, before starting I will assume that you know how the client server model works and all the basic terms related to communication like request response etc. Calling API's What are API's, API's or application programming interfaces and what are they? Less than name says it is an interface which allows applications to communicate with one another. It is not the server or the database, but it is the access points to the server or database. It is the answer to the question.
How does my Facebook plugin share on Facebook appear on YouTube? Didn't get it Let's say you're opening Avengers end games Hulk out clip on YouTube from your laptop in your home in Houston. The request you send from your computer to watch the video is received by the YouTube servers in Oklahoma. But YouTube can provide only YouTube data, right? So how did it get access to your Facebook account present in Facebook servers in Georgia? This is where the API's get into the picture still looks complicated.
Let's say you order creme brulee in a restaurant. As you know, every restaurant has a kitchen. Now guess what will be the API here? Someone is missing in this picture. Who is it? The waiter API is equivalent to the waiter in a restaurant the waiter helps to communicate with between you and the kitchen, he takes your request, which is the order to the kitchen and returns with a response from the kitchen, which is your creme brulee.
In the networking world, API's help an application to application communication using web services. A web API is a development in web service, which provides an interface for the client and the server to interact. You would have heard of API's being called as restful or rest API's, which is an architectural framework. It is commonly misunderstood as a protocol. There are a set of six guiding constraints, which make an API restful. If you want to know more, you can check out the link in the resources.
Okay, but why should I know about the rest? Like I told you before, rest is it designs If it doesn't have any protocols like soap, which makes it flexible to use. In addition to that, it uses Jason for data transfer, unlike soap, which uses XML, which is too much verbose. So soon, rest became popular. And now it is considered as a standard for the web API's. And this is the reason why you should know about it.
Now let's learn how to call a web API. In a client server model, communication takes place via requests and responses. In this video, we will be learning about HTTP based rest API's, which means the client uses HTTP request to make a request to the server. So the next step would be to learn how to call a web API. So how do we call a web API using HTTP requests? The HTTP requests will be something like this.
This is the URL or the web address. This is the HTTP method. These indicate the action to perform on the resource. There are other methods also like post, put, delete, and some more, which is not so common, so we can ignore it for now. If you want to know the other ones Also, you can find a link in the resources. I'll explain these four methods soon.
You can add data to be sent as parameters in the request. Other than these, you can send HTTP headers. This is the request part. The response consists of a status code, response headers, and the message body containing the data you requested for. There are five basic types of status codes. Check out for the appropriate link in the resources Don't worry if you don't get it right away.
We will be using these soon in the video, so you will get to know them better. You may think, wait, I'm okay with URLs, common word, but I'd really want to know what those methods are. Okay, let me clear it up. the get method, as the name says, is used to get data from the resource, it cannot modify the resource. The POST method can send data to the server like data from web forms. It can also be used to create a resource.
The put method is used to update a resource and the Delete method is used to delete data. Next are the parameters. You can pass data as a parameter in the URL like this. You can pass data as query parameters. Like this, you can also send data in a message body, or via message headers. If you want to send data using the get method, then you can send it as a parameter in the URL.
If you want to send data to the server using the POST method, then you should pass the data as a JSON data in the message body. We'll see how it works soon. To get you familiar with these terms, we can try calling a web API using node red. Here we're going to call a Tone Analyzer API from Watson services. So how do we do it? We need a node to send HTTP requests.
And there it is, HTTP request node. This node sends HTTP requests and returns back the responses. You can consider this no lack of web browser You are giving a URL from where you need to get the response. Let's see how to configure this. Inside, you can see there is a tab to choose the HTTP method. There is also a place for you to give the URL from where you want to get data.
You can set what kind of data you want in return using this field. For now, leave the other fields. I'll explain them later. Okay, before we go further, to get a feel for how it actually works, I want you to quickly try out entering the URL www.example.com in a new HTTP request node, connected inject and debug node. Make sure you have set complete message object deploy and inject the flow you will get a risk Bond's having HTML content, just like how the web browsers get till you get familiar, try accessing different URLs using this method. Okay, back to business.
But which Web API Are we going to call? I have an idea. We can call the Tone Analyzer API from the Watson services. For that, we need to add Tone Analyzer as a service from the catalog to our application. This is the Manage part. Here, you can see two main components, the API key and the URL, which is the service endpoint.
Note that the service endpoint varies from region to region. That is, the service endpoint denotes the location of the service instance. For now, copy this API key. The other important entities in this page are the Getting Started page. The API reference. For now, what we need is the API reference.
So let's go there. Yeah, you can see the documentation part in the middle with the commands and examples on your left. If you don't know what curl is, check out the resources. Okay. Now one important thing to note is web API's often requires you to authenticate a service before you can use it. There was an update last year, after which the service has started using Iam API keys for authentication.
Older service instances use basic authentication, which requires the use of username and password, which are not available if you have installed the service recently. So now, you have to use API key as the username and password as the actual API. Tip, after choosing basic authentication, we can configure this in the HTTP request node. Note that there are other authentication methods also. But we will stick to the basic one in this course. Okay, now come down here, you can see the service endpoints.
Okay, which service endpoint should we select? If you have Dallas as the region, then you must choose the first one. This is the same URL, which we saw before as the service endpoint URL on the service page. The next is version. This is we have to add the version of this API as a parameter in the URL. Okay, if you have seen the status code documentation, you will be able to understand what these are Next, we will come to the Methods section.
Before we get into this, understand that we will be analyzing text messages. So when we send requests, we also need to send the text as the message body. Now come to this, we have this URL. Now this is you can analyze the tone of a text using the get method from this URL slash v3 slash tone. So we have to add this to the URL and use this URL inside the HTTP requests note. But remember, we are using the get method.
So we can pass the text only as a parameter in the URL. So how do we do that? Let's check here. See, they've given an example. They have added the version as a query parameter, and then the text note that space in between In the text is denoted as percentage 20. Okay, we can add them to the URL now.
First, let me copy the version part, then the text, your current mood. I'm enjoying no dread. add one more line. I am confused just for the sake of testing this thing. Okay, now let's check what else we can add as a query parameter, techs done version done sentences and tones. This is if we want the analysis of each sentence, we have to set this parameter true then the tones This gives analysis on three tones.
But using this will not affect the response anyway, because this parameter has been deprecated in the version we have chosen. Now the request is complete or is it We haven't included the headers yet. to include them. Let's use a change node. In the API doc page, we can find some custom headers to use. Let's use both of them.
I'm going to try out the Accept language as s. A spaniel. Note that the headers can be given as JSON data, so we can add them like this. Next, to kickstart the flow, we need an inject node. Note that the message dot payload doesn't matter at all in GET request. Then we can add a debug node, complete message object to view the whole response. Deploy and inject oops, a 404 page not found error.
Which means we have entered the URL friendly. Okay, let's fix that. Then also note that the password stored here is changed once we reopen the note. It is because of a bug. Okay, again, deploy and inject. In the response, we can see the usual stuff, payload headers, status code, response URL and redirect list of these, the payload status code are the only important parts.
The payload is a JSON string. But if I want to do some operation on say, the score, then it's kind of tough, right? There are two ways to get data in JSON object format. One is we can change the JSON string to JavaScript object using one of the nodes Remember Jason node, this will convert JSON string to JSON object and vice versa. The other way would be to mention the return format in the request node. If you give return passed Jason object here, you will get it the way we want.
Now let's see. See, GS object. Cool. You can see the elaborate analysis here. Under the document tone, we've got two scores, because the lines were different. Then under the sentences don't, we've got similar responses.
Next, the headers part. I'm curious. This has got content type, content length, blah, blah, blah, content, language, date, and connection. The rest of it, as you know, is server side stuff. If you can't wait to learn These are, check out the relevant document in the resources. We will now move on to status code.
What is 200 mean? If you said successful, congratulations. Okay, now we can try sending the same thing using the POST method. Let's check the example. Most part of the flow is the same except for the text, we need to remove it. Okay, first we'll edit a new HTTP request node.
Like I told you before, we have to send the text data as a separate message body. The text data we send can be in any form like Jason, or plain text or HTML form. But you have to indicate the type of data we send in the message headers. So add a change node and add the extra header can try sending a JSON data first. Then also set the message dot payload to a JSON object having text as key, an actual text as value. Now deploy and inject.
Do you get the same thing? Awesome. In case you didn't notice, there is already a Tone Analyzer node on your node palette. You can configure it and use the same to identify the tone of your text. Note that here, instead of giving the username and password, you must give the service endpoint and the API key. We saw Before.
However, there may be some capabilities exposed by the Web API that are not available with the provided nodes. And we have also learned how to call API's. So anyway, it's good. Okay, now we've learned how to call a web API. You also get familiar with how to use message headers, and pass data via parameters in GET and POST methods. In the next video, we'll see how to implement web API's.