You need to enable JavaScript to run this app. 使用Express构建REST API时如何通过请求URL控制返回的JSON内容
优惠活动
大模型
产品
解决方案
定价
更多

使用Express构建REST API时如何通过请求URL控制返回的JSON内容

实现方案

首先纠正你给出的示例代码中的小问题:Express路由回调的参数顺序是(req, res, next),请求对象在前、响应对象在后,写反会导致调用响应方法时报错。

你可以通过抽离公共简历数据+动态路由参数的方案实现需求,不需要为每个字段单独写路由,具体实现如下:

步骤1:抽离独立的简历数据对象

把完整简历内容单独定义为全局常量,后续修改简历只需要调整这一处即可,不需要改动路由逻辑:

const fullResume = {
  // 你的完整简历字段
  "name": "张三",
  "age": 28,
  "phone": "13xxxxxxxxx",
  "education": [
    {
      "school": "XX大学",
      "major": "计算机科学与技术",
      "time": "2016-2020"
    }
  ],
  "experience": [
    {
      "company": "XX科技有限公司",
      "post": "前端开发工程师",
      "time": "2020-至今"
    }
  ],
  "skills": ["JavaScript", "Node.js", "Express", "React"]
}

步骤2:编写兼容根路径和字段路径的通用路由

使用Express可选动态路由参数实现两种请求的统一处理,同时增加字段合法性校验避免报错:

// :section? 代表参数是可选的,请求根路径时section参数为空
app.get('/:section?', (req, res, next) => {
  const requestSection = req.params.section
  // 请求根路径,返回完整简历
  if (!requestSection) {
    return res.json(fullResume)
  }
  // 校验请求的字段是否存在于简历对象中
  if (fullResume.hasOwnProperty(requestSection)) {
    return res.json(fullResume[requestSection])
  }
  // 非法字段返回404提示
  res.status(404).json({
    code: 404,
    message: `请求的简历字段 ${requestSection} 不存在`
  })
})

可选优化

如果需要对部分敏感字段(比如联系方式)单独做权限校验,只需要把对应字段的专属路由写在通用路由之前即可,Express会优先匹配先定义的路由:

// 优先匹配/phone路径的请求,单独做权限校验
app.get('/phone', (req, res, next) => {
  // 示例校验逻辑:请求参数携带正确token才返回联系方式
  if (req.query.access_token !== '自定义校验密钥') {
    return res.status(403).json({
      code: 403,
      message: "无权限查看联系方式"
    })
  }
  res.json(fullResume.phone)
})

// 通用路由写在所有专属路由之后
app.get('/:section?', (req, res, next) => {
  // 同上的通用逻辑
})

内容的提问来源于stack exchange,提问作者JCrew0

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 18:27:03