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

使用整数ID在json-server中触发‘未找到’错误的原因排查

为什么json-server用整数ID访问返回“未找到”,改成字符串ID就正常?

我通过npm安装了json-server,创建了students.json用于API测试。访问http://localhost:3000/students/2获取ID为2的学生详情时出现“未找到”错误,但把ID改成字符串类型后就能正常访问。参考的教程用整数ID却能正常运行,请问这是为什么?

我的students.json内容如下:

{
    "students": [
        {
            "id": 1,
            "name": "Soze",
            "location": "Portland",
            "phone": "9987568",
            "Courses": [
                "Python",
                "Java"
            ]
        },
        {
            "id": 2,
            "name": "Isabelle",
            "location": "Seattle",
            "phone": "2345678",
            "Courses": [
                "JavaScript",
                "C++"
            ]
        }
    ]
}

原因分析及解决办法

  • 版本差异导致匹配规则变化:json-server在v0.17版本后默认启用严格模式,此时会对URL中的ID和JSON里的ID做严格相等比较(===)。URL里的2是字符串类型,而你JSON里的id是整数类型,类型不匹配就会返回“未找到”。你参考的教程用的是旧版本,旧版本默认用松散相等(==),会自动转换类型,所以整数ID能正常匹配。
  • 关闭严格模式即可解决:启动json-server时添加--strict false参数,关闭严格模式后会自动做类型转换,整数ID就能正常匹配了:
    json-server --watch students.json --strict false
    
  • 保持主键类型一致:如果不想关闭严格模式,也可以把JSON里的id改成字符串类型(比如"id": "2"),和URL中的参数类型统一,这样也能正常访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:30:18