APIs in Node-RED - 2

12 minutes
Share the link to this page
Copied
  Completed
You need to have access to the item to view this lesson.
One-time Fee
$69.99
List Price:  $99.99
You save:  $30
€67.10
List Price:  €95.86
You save:  €28.76
£55.67
List Price:  £79.54
You save:  £23.86
CA$100.49
List Price:  CA$143.56
You save:  CA$43.07
A$111.96
List Price:  A$159.95
You save:  A$47.99
S$94.87
List Price:  S$135.54
You save:  S$40.66
HK$544.16
List Price:  HK$777.41
You save:  HK$233.24
CHF 62.56
List Price:  CHF 89.37
You save:  CHF 26.81
NOK kr792.29
List Price:  NOK kr1,131.89
You save:  NOK kr339.60
DKK kr500.54
List Price:  DKK kr715.08
You save:  DKK kr214.54
NZ$123.74
List Price:  NZ$176.78
You save:  NZ$53.04
د.إ257.07
List Price:  د.إ367.26
You save:  د.إ110.19
৳8,330.24
List Price:  ৳11,900.85
You save:  ৳3,570.61
₹5,945.56
List Price:  ₹8,494.03
You save:  ₹2,548.46
RM315.51
List Price:  RM450.75
You save:  RM135.24
₦108,149.19
List Price:  ₦154,505.46
You save:  ₦46,356.27
₨19,403.53
List Price:  ₨27,720.51
You save:  ₨8,316.98
฿2,393.75
List Price:  ฿3,419.79
You save:  ฿1,026.04
₺2,454.67
List Price:  ₺3,506.82
You save:  ₺1,052.15
B$425.95
List Price:  B$608.53
You save:  B$182.58
R1,282.09
List Price:  R1,831.63
You save:  R549.54
Лв131.15
List Price:  Лв187.37
You save:  Лв56.21
₩101,234.93
List Price:  ₩144,627.53
You save:  ₩43,392.60
₪254.67
List Price:  ₪363.83
You save:  ₪109.16
₱4,117.86
List Price:  ₱5,882.91
You save:  ₱1,765.05
¥10,949.58
List Price:  ¥15,642.93
You save:  ¥4,693.35
MX$1,405.49
List Price:  MX$2,007.92
You save:  MX$602.43
QR254.12
List Price:  QR363.05
You save:  QR108.92
P963.49
List Price:  P1,376.48
You save:  P412.98
KSh8,999.72
List Price:  KSh12,857.29
You save:  KSh3,857.57
E£3,561.31
List Price:  E£5,087.81
You save:  E£1,526.49
ብር8,689.79
List Price:  ብር12,414.52
You save:  ብር3,724.72
Kz64,250.82
List Price:  Kz91,790.82
You save:  Kz27,540
CLP$69,143.42
List Price:  CLP$98,780.55
You save:  CLP$29,637.13
CN¥510.67
List Price:  CN¥729.56
You save:  CN¥218.89
RD$4,244.94
List Price:  RD$6,064.47
You save:  RD$1,819.52
DA9,440.04
List Price:  DA13,486.35
You save:  DA4,046.31
FJ$162.13
List Price:  FJ$231.62
You save:  FJ$69.49
Q537.12
List Price:  Q767.35
You save:  Q230.22
GY$14,584.29
List Price:  GY$20,835.60
You save:  GY$6,251.30
ISK kr9,693.35
List Price:  ISK kr13,848.23
You save:  ISK kr4,154.88
DH701.59
List Price:  DH1,002.31
You save:  DH300.72
L1,285.64
List Price:  L1,836.70
You save:  L551.06
ден4,127.89
List Price:  ден5,897.23
You save:  ден1,769.34
MOP$558.06
List Price:  MOP$797.27
You save:  MOP$239.20
N$1,283.39
List Price:  N$1,833.49
You save:  N$550.10
C$2,565.21
List Price:  C$3,664.75
You save:  C$1,099.53
रु9,482.30
List Price:  रु13,546.73
You save:  रु4,064.42
S/259.58
List Price:  S/370.84
You save:  S/111.26
K282.68
List Price:  K403.85
You save:  K121.16
SAR262.90
List Price:  SAR375.59
You save:  SAR112.68
ZK1,929.21
List Price:  ZK2,756.13
You save:  ZK826.92
L333.95
List Price:  L477.10
You save:  L143.14
Kč1,686.22
List Price:  Kč2,408.98
You save:  Kč722.76
Ft27,781.83
List Price:  Ft39,690.03
You save:  Ft11,908.20
SEK kr772.17
List Price:  SEK kr1,103.14
You save:  SEK kr330.97
ARS$71,242.69
List Price:  ARS$101,779.64
You save:  ARS$30,536.94
Bs481.71
List Price:  Bs688.19
You save:  Bs206.47
COP$305,135.87
List Price:  COP$435,927.07
You save:  COP$130,791.20
₡35,171.10
List Price:  ₡50,246.58
You save:  ₡15,075.48
L1,769.55
List Price:  L2,528.04
You save:  L758.48
₲543,563.42
List Price:  ₲776,552.46
You save:  ₲232,989.03
$U3,109.25
List Price:  $U4,441.97
You save:  $U1,332.72
zł286.15
List Price:  zł408.81
You save:  zł122.65
Already have an account? Log In

Transcript

Video 3.6 API's in Node red two. In this video, let's learn how to implement a web API. Since we're going to be building API's, we can have a client and a server. So you can use your mobile or laptop or RPI as a client. And we can have no dread running in IBM cloud as the server. I'll be using node red running on my laptop.

And one more thing, since we're building an API, we can just leave it like that for any random person to access and use, right. So we need to build some authentication to secure our API. I'll teach you how to do that in this video. But what kind of API Are we going to build? Let's build a very simple one. I'm going to build a name for matter API.

Yes. If you give your name as a person parameter in fully lowercase or fully uppercase, or a mixed one, the API will output a string. Hi, with your name properly formatted. Cool, isn't it? Let's start. We have already used the client parts using the HTTP request node.

Next is the server part for which we'll be using the HTTP in an output nodes. Note that these nodes can only be used together. The implementation part of the API comes in between these two nodes. The HTTP in Node gets a request from the client and the HTTP out node sends a response back to the client. Did you notice that red triangle on the top of HTTP in node that means there are errors with its configuration or it is missing? configuration data.

Speaking of configuration, I had told you about configuration nodes. These nodes share the same configuration. For example, in the future we will be using Twitter nodes. Then the credentials you enter will be saved in global scope, which will allow you to share the credentials between flows and workspaces. Note that when you import or export these nodes that passwords are not saved. Remember the Configuration tab we saw in the sidebar.

That is where these kinds of nodes can be accessed. It is currently empty, but soon will be filled up. Check it out by the end of this section. Inside HTTP in node, let's first create a URL. Let's call it slash name. For now, we can use the get method.

What else do we need to format our name? named right? first name and last name. Okay, so can we get them as parameters from the URL? To set input parameters, you need to add a colon before them like this. Slash colon first slash colon last.

So when you give the URL as slash name slash Jane slash do, then Jane is assigned to the first parameter and doe is assigned to the last parameter, get it? Okay, on the HTTP out node, you can set the status code as 200 for now. Now, we have to do something with this data right? We will use it in message dot payload like this. How can we access this parameter data? For that, we first need to check how the request is sent from From the client end, so use a debug node with complete message object at the HTTP in Node.

For now, send some text via the message payload. Now deploy the app. Now let's build the client end. Add the server URL with parameters. You don't have to change anything else in here for now. deploy an inject.

First, let's see the response message. We got the payload. Now, let's see the request message. The payload properties empty because we haven't defined anything in there yet. Next, is the request object. When you come down, you can see the params object, which has the parameters we entered in the URL, below, this is the query object, which is what we will be using in some time.

If you want to know about the rest of the fields, check out the resources section for links to the HTTP request topic. Now we know where the parameters are located. So let's format this data we've got in the function node. First, set the variable names like this for easy access. Then we can write the command for capitalizing the first letter and all the other letters small in a name, either first or last. So for both of them, we'll write the same commands.

We can put them in a function which can be reused. Now let's write the function. breaking down the problem helps Before you start here, I would suggest that you go through the link in the resources section, which covers the string objects. If you have checked out the resource, then this will be easier. The first step is to separate the first letter from a group of letters. So we use slice, zero comma one here.

Next, we need to change this letter to uppercase plus, we also need to convert all the other letters to lowercase. You can do it this way by slicing the rest of the letters and do a lowercase on them. This is the function add a message dot payload to output the format in a fancy way. Now use it to format your name Ted ah But we haven't tried query parameters. Let's try them to the query parameters can be sent after the question mark. Then the values are sent like FMT is equal to full, which means FMT is the key, and full is the value.

Let's add one more query parameter called title to get the title, Mr. Mrs. or Miss. The FMT parameter tells the API how to format the name like full, the normal way, formula, Mr. Mrs. lastname. Here the title is needed or informal. First name alone. You can directly pass these as queries, or you can use mustache style tags. So values can be inserted to the incoming flow.

To pass values, we need to set them and I Using the change node for that, note that it is not possible to pass the URL as a property of the incoming flow. Now we can define these query parameters in the change node. Everything is set on the client side. on the server side, we need to edit the function node. It's quite a long code. So import the function node I have given in the resources.

Here, I'm first assigning variables to the data we passed from the client for easy access. The FMT value is present in message dot request dot query, I have given the default FMT as full you can customize it, if you want to. Then have added if conditions to check the format and pass the parameters in the message payload accordingly. You can check the code Next, I have also Define the status code here to be 200. Which means Okay. Now let's try out the API.

Try out different combinations of format and title queries. Congrats on creating your first API. When you finished experimenting with it, pause the video and try implementing the same API in the POST method. Tried, Did it work? Okay, there is not much of a difference. on the client side, we have to pass the FMT and title queries inside message dot payload, as a JSON object.

Next, we have to set message dot headers to say that the content type is G And then we have to change the way we access these parameters in the function node in the server, since the parameters are now sent in the message body. And don't forget to change the HTTP methods in both client and server, not try to deploy and inject. Are you getting it the same way? Congrats. If not rewatch the get part of this video and try again. We have built our API, but shouldn't we secure it?

Yes, we must. So let's do that. Remember, I've mentioned earlier that there are two more methods to authenticate the notary platform. We are going to see them now. Out of the box, no dread provides basic auth to the HTTP input. node, it is actually a binary setting for all endpoints.

So all endpoints will be authenticated. To secure your API, go to the bloomix underscore settings.js file in the gate section and add HTTP node auth settings. added this way, and commit the changes to enable basic authentication. Remember, for the password, we use node red admin to hash the password using decrypt and then added it will do the same here at the same username and password for the HTTP static auth. These are used for authentication in the static pages. For example, if you want to go to the URL slash name dot html, which is a static page, then you need to follow the same method for this too.

Then we can commit the change And check it out. Access the API from your client, it should get an unauthorized error. Modify the authentication settings in the HTTP request nodes to add basic auth and then commit the changes. Now try running the API works like a charm. With that we come to the end of this video. In this video, we saw how to implement web API's and how to secure them.

In the next video, we'll learn how to use storage nodes

Sign Up

Share

Share with friends, get 20% off
Invite your friends to LearnDesk learning marketplace. For each purchase they make, you get 20% off (upto $10) on your next purchase.