You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 21:24:01