如何在Node.js中实现支持查询字符串参数运算的简易计算器接口
Node.js 简易计算器路由实现方案
方案1:原生Node.js无依赖实现(适配Hacker Rank在线判题环境)
直接使用Node.js内置模块完成,无需安装任何第三方包,代码如下:
const http = require('http'); const url = require('url'); const PORT = process.env.PORT || 3000; const server = http.createServer((req, res) => { // 解析请求路径和查询参数 const parsedUrl = url.parse(req.url, true); const path = parsedUrl.pathname; const query = parsedUrl.query; // 仅匹配GET请求的/cal路由 if (req.method === 'GET' && path === '/cal') { const { func, a, b } = query; // 转换参数为数字类型 const numA = Number(a); const numB = Number(b); let result = 0; if (func === 'add') { result = numA + numB; } else if (func === 'subtract') { result = numA - numB; } // 按需求格式返回结果 res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' }); res.end(`Addition is ${result}`); return; } // 其他路由返回404 res.writeHead(404); res.end('Not Found'); }); server.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });
核心逻辑说明:
- 用内置
url模块的parse方法,第二个参数传true可直接将查询字符串解析为JS对象,方便直接取func、a、b三个参数 - 对
a、b做数值类型转换,避免字符串拼接导致的计算错误 - 严格按照需求返回指定格式的文本,减法场景同样输出
Addition is X的内容
方案2:Express框架实现(日常项目开发常用写法)
如果允许使用Express框架,实现更简洁:
const express = require('express'); const app = express(); const PORT = process.env.PORT || 3000; app.get('/cal', (req, res) => { const { func, a, b } = req.query; const numA = Number(a); const numB = Number(b); let result = 0; if (func === 'add') { result = numA + numB; } else if (func === 'subtract') { result = numA - numB; } res.send(`Addition is ${result}`); }); app.listen(PORT, () => { console.log(`Server running on port ${PORT}`); });
测试验证
服务启动后访问以下链接可验证效果:
- 加法场景:
http://localhost:3000/cal?func=add&a=20&b=25,返回Addition is 45 - 减法场景:
http://localhost:3000/cal?func=subtract&a=25&b=20,返回Addition is 5
内容的提问来源于stack exchange,提问作者Vishal Lade
相关产品推荐
相关产品推荐

