Add a new endpoint to your API Use Promises and setTimeout to make all of your functions asynchronous. The endpoint will be /specialOperation This endpoint will take the parameters: length, width, and grade It will asynchronously (with your utility module) get the grade result and rectangle result. It will look something like this: {"gradeStats":{"average":86.25,"minimum":73,"maximum":97},"rectangle":{"area":8,"perimeter":12}} Use promises (obvi). Notes Do not make your utility module functions take an entire req object. const express = require("express"); const session = require("express-session"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); app.use(session({ secret:"secret-key", resave: false, saveUninitialized: false, })); app.use((req, res, next) => { if (!req.session.commandCount) { req.session.commandCount = 0; } if (!req.session.lastCommand) { req.session.lastCommand = ""; } next(); }); app.get('/dotted', (req, res) => { req.session.commandCount++; req.session.lastCommand="/dotted"; const { word1, word2 } = req.query; const dots = '.'.repeat(30 - word1.length - word2.length); const result = `${word1}${dots}${word2}`; res.status(200).contentType('text/html').send(result); }); app.get("/fizzBuzz",(req,res)=>{ req.session.commandCount++; req.session.lastCommand="/fizzBuzz"; const start=parseInt(req.query.start); const end=parseInt(req.query.end); let response= ""; for (let i = start; i ${response}`); }); app.get("/grageStats", (req,res) =>{ req.session.commandCount++; req.session.lastCommand="/gradeStats"; const {grades}=req.query; const min= Math.min(...grades); const max= Math.max(...grades); const avg= (grades.reduce((a, b) => a + b) / grades.length).toFixed(2); const result = JSON.stringify({ average: avg, minimum: min, maximum: max }); res.status(200).contentType("application/json").send(result); }); app.get("/rectangle", (req,res) =>{ req.session.commandCount++; req.session.lastCommand="/rectangle"; const length=parseInt(req.query.length); const width= parseInt(req.query.width); const area = length*width; const perimeter = 2*(length+width); const response = {area,perimeter}; res.contentType("application/json"); res.send(response); }); app.get('/stats', (req, res) => { res.json({ commandCount: req.session.commandCount, lastCommand: req.session.lastCommand}); }); const PORT = process.env.PORT || 3000; const HOST = process.env.HOST || 'localhost'; app.listen(PORT, HOST, () => { console.log(`Server running at http://${HOST}:${PORT}`); });
Add a new endpoint to your API Use Promises and setTimeout to make all of your functions asynchronous. The endpoint will be /specialOperation This endpoint will take the parameters: length, width, and grade It will asynchronously (with your utility module) get the grade result and rectangle result. It will look something like this: {"gradeStats":{"average":86.25,"minimum":73,"maximum":97},"rectangle":{"area":8,"perimeter":12}} Use promises (obvi). Notes Do not make your utility module functions take an entire req object. const express = require("express"); const session = require("express-session"); const dotenv = require("dotenv"); dotenv.config(); const app = express(); app.use(session({ secret:"secret-key", resave: false, saveUninitialized: false, })); app.use((req, res, next) => { if (!req.session.commandCount) { req.session.commandCount = 0; } if (!req.session.lastCommand) { req.session.lastCommand = ""; } next(); }); app.get('/dotted', (req, res) => { req.session.commandCount++; req.session.lastCommand="/dotted"; const { word1, word2 } = req.query; const dots = '.'.repeat(30 - word1.length - word2.length); const result = `${word1}${dots}${word2}`; res.status(200).contentType('text/html').send(result); }); app.get("/fizzBuzz",(req,res)=>{ req.session.commandCount++; req.session.lastCommand="/fizzBuzz"; const start=parseInt(req.query.start); const end=parseInt(req.query.end); let response= ""; for (let i = start; i ${response}`); }); app.get("/grageStats", (req,res) =>{ req.session.commandCount++; req.session.lastCommand="/gradeStats"; const {grades}=req.query; const min= Math.min(...grades); const max= Math.max(...grades); const avg= (grades.reduce((a, b) => a + b) / grades.length).toFixed(2); const result = JSON.stringify({ average: avg, minimum: min, maximum: max }); res.status(200).contentType("application/json").send(result); }); app.get("/rectangle", (req,res) =>{ req.session.commandCount++; req.session.lastCommand="/rectangle"; const length=parseInt(req.query.length); const width= parseInt(req.query.width); const area = length*width; const perimeter = 2*(length+width); const response = {area,perimeter}; res.contentType("application/json"); res.send(response); }); app.get('/stats', (req, res) => { res.json({ commandCount: req.session.commandCount, lastCommand: req.session.lastCommand}); }); const PORT = process.env.PORT || 3000; const HOST = process.env.HOST || 'localhost'; app.listen(PORT, HOST, () => { console.log(`Server running at http://${HOST}:${PORT}`); });
Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
Related questions
Question
Add a new endpoint to your API
Use Promises and setTimeout to make all of your functions asynchronous.
The endpoint will be /specialOperation
This endpoint will take the parameters: length, width, and grade
It will asynchronously (with your utility module) get the grade result and rectangle result.
It will look something like this:
{"gradeStats":{"average":86.25,"minimum":73,"maximum":97},"rectangle":{"area":8,"perimeter":12}}
Use promises (obvi).
Notes
Do not make your utility module functions take an entire req object.
const express = require("express");
const session = require("express-session");
const dotenv = require("dotenv");
dotenv.config();
const app = express();
app.use(session({
secret:"secret-key",
resave: false,
saveUninitialized: false,
}));
app.use((req, res, next) => {
if (!req.session.commandCount) {
req.session.commandCount = 0;
}
if (!req.session.lastCommand) {
req.session.lastCommand = "";
}
next();
});
app.get('/dotted', (req, res) => {
req.session.commandCount++;
req.session.lastCommand="/dotted";
const { word1, word2 } = req.query;
const dots = '.'.repeat(30 - word1.length - word2.length);
const result = `${word1}${dots}${word2}`;
res.status(200).contentType('text/html').send(result);
});
app.get("/fizzBuzz",(req,res)=>{
req.session.commandCount++;
req.session.lastCommand="/fizzBuzz";
const start=parseInt(req.query.start);
const end=parseInt(req.query.end);
let response= "";
for (let i = start; i ${response}`);
});
app.get("/grageStats", (req,res) =>{
req.session.commandCount++;
req.session.lastCommand="/gradeStats";
const {grades}=req.query;
const min= Math.min(...grades);
const max= Math.max(...grades);
const avg= (grades.reduce((a, b) => a + b) / grades.length).toFixed(2);
const result = JSON.stringify({ average: avg, minimum: min, maximum: max });
res.status(200).contentType("application/json").send(result);
});
app.get("/rectangle", (req,res) =>{
req.session.commandCount++;
req.session.lastCommand="/rectangle";
const length=parseInt(req.query.length);
const width= parseInt(req.query.width);
const area = length*width;
const perimeter = 2*(length+width);
const response = {area,perimeter};
res.contentType("application/json");
res.send(response);
});
app.get('/stats', (req, res) => {
res.json({ commandCount: req.session.commandCount,
lastCommand: req.session.lastCommand});
});
const PORT = process.env.PORT || 3000;
const HOST = process.env.HOST || 'localhost';
app.listen(PORT, HOST, () => {
console.log(`Server running at http://${HOST}:${PORT}`);
});
Expert Solution
This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
Step by step
Solved in 4 steps with 1 images
Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Recommended textbooks for you
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education