首页 > 解决方案 > 如何解决节点 js 中的以下要求?

问题描述

由于我是 node js 的新手,所以我想尝试一些关于黑客等级的问题。我能够解决大部分问题,但我陷入了这个问题。

我不知道如何路由这种查询字符串节点 js/

问题是创建一个具有以下要求的简单计算器应用程序。

  1. /cal?func=add&a=20&b=25 -> Get method-> 这条路线应该添加“a”和“b”的值。

    预期响应:加法为 45

  2. /cal?func=subtract&a=25&b=20 -> Get method-> 这条路线应该减去“a”和“b”的值。

    预期响应:加法为 5

问题要求:

问题要求

标签: node.js

解决方案


如果您使用的是 expressJS,那么简单的方法就是,您只需要获取查询值并进行计算,您可以执行多个 if 来知道要执行哪个函数,或者您可以使用函数映射来完成。在这里,我使用了一个变量 funcMap 来保存属性 add, sub, mul :


const funcMap = {
  add: (a, b) => a + b,
  sub: (a, b) => a - b,
  mul: (a, b) => a * b
}

// using ExpressJS
router.get('/cal', (req,res) => {
  const { func, a, b } = req.query;

  // you should check if func exist and is valid, same for a and b.
  res.send(funcMap[func](+a, +b));
});

// using NodeJS
const url = require('url');

http.createServer((req, res) => {
  res.writeHead(200, {'Content-Type': 'text/html'}); 
            
  if (req.url === '/cal') {
    const { func, a, b } = url.parse(req.url, true).query;
    res.write(funcMap[func](+a, +b)); 
  }
  res.end(); 
})

推荐阅读