Parsing a Request in Node JS
Learn how to parse and use a Request in Node JS.
Requirements
The Requirements for this Tutorial are:
- Node JS v16 or later
- Optionally a Code Editor like Visual Studio Code
Setting up
To Start, we will Setup our Dev Environment. You can skip this Step if you are already setup with a Terminal and your Editor
Startup your Terminal and Type:
npm init -y
This will Setup a Node JS Project in the current folder. If you do not want that, then you will first have to change your Directory.
The Request
Then you will need to create a new file called "index.js". Open it, and create a new Fetch Request. After that your Code should work like this:
var requestOptions = {
method: 'GET',
redirect: 'follow'
};
fetch("https://api.izanami.dev/destiny/v1/weapon/235827225", requestOptions)
.then(response => response.text())
.then(result => {
console.log(result)
})
.catch(error => console.log('error', error));
The console.log(result) will return the Response from the API to your Terminal.
Run it with:
node index.js
The output should look like this:
{
"statusName": "Ok",
"isError": false,
"statusCode": 200,
"msg": {
"hash": 235827225,
"collectibleHash": 1042746134,
"name": "Eyasluna",
"classType": 3,
"classTypeName": "Unknown",
"itemType": 3,
"itemTypeName": "Weapon",
"damageType": 151347233,
"damageTypeName": "Stasis",
"ammoType": 1,
"ammoTypeName": "Primary",
"equipmentSlot": 1498876634,
"equipmentSlotName": "Kinetic Weapons",
"breakerType": 0,
"breakerTypeName": "None",
"specialItemType": 0,
"specialItemTypeName": "null",
"powerCap": 999990,
"sourceString": "Source: 'Grasp of Avarice' Dungeon",
"collectibleIcon": "/common/destiny2_content/icons/6a71ffaef39e6bad084b933b3f034ce6.jpg",
"itemSubTypeName": "Hand Cannon",
"itemSubType": 9,
"tierType": "Legendary",
"isRandomlyRolled": 1,
"icon": "235827225/collectible/icon",
"perks": [
{
"hash": 1294026524,
"perkName": "Adaptive Frame",
"column": 1,
"description": "A well-rounded grip, reliable and sturdy.",
"perkExplanation": "501 - Not Implemented",
"statArea": []
}
//output Ommitted
],
"stats": [
{
"statName": "Stability",
"statValue": 64,
"statHash": 155624089,
"statExplanation": "501 - Not Implemented"
},
//output Ommited
]
}
}
Your Output will be a lot longer, it is shortened here for performance Reasons.
Getting the Data out of the Object.
To get the Data from the Object that we queried from the API, we will use something like this.
var requestOptions = {
method: 'GET',
redirect: 'follow'
};
fetch("https://api.izanami.dev/destiny/v1/weapon/235827225", requestOptions)
.then(response => response.text())
.then(result => {
let jsonResult = JSON.parse(result)
console.log(jsonResult.msg.name)
})
.catch(error => console.log('error', error));
Then run it with:
node index.js
OUTPUT
Eyasluna
What we did here:
- We added a variable called
jsonResultand assigned the Value ofJSON.parse(result)which, is a function and returns an Object for us to use. - Then we used
console.log(jsonResult.msg.name)to print out the Name of the Gun - Eyasluna - to the Terminal - in this case the
.msgcorresponds to one of the keys in the JSON object that we received earlier. With `.msg.name`` we can get a value from an Object that is in an Object and that is exactly what we did here.