Json-server如何设置API自定义URL及修改后POST/PATCH等请求失效如何解决
故障原因排查
- my-json-server服务本身的只读限制
typicode提供的my-json-server.typicode.com是面向演示场景的只读模拟服务,官方设计层面不支持持久化写操作。你发送的POST、PATCH、DELETE请求只会返回临时的模拟成功响应,不会真正修改你绑定的GitHub仓库内的db.json文件,后续请求拉取的还是仓库里的原始数据,这是该问题的最常见诱因。 - 跨域请求被拦截
本地运行的json-server默认开启了全量跨域允许,而typicode公共服务的跨域规则限制更严格。如果你的请求携带了自定义请求头、鉴权字段,或者请求方法不符合预校验规则,会被浏览器的跨域安全策略拦截,你可以打开浏览器控制台查看是否存在CORS相关报错确认该问题。 - 请求格式不符合服务要求
my-json-server要求所有写请求的Content-Type请求头必须设置为application/json,如果你的请求带的是multipart/form-data、text/plain等其他类型,服务端会无法解析请求体,最终操作不生效。 - 资源路径不匹配
确认你请求的接口路径和GitHub仓库中db.json的结构完全对应,比如你调用的是/movements接口,就需要保证db.json根节点存在movements对应的数组字段,否则写操作会直接返回404错误。
若你需要支持可持久化的写操作,需要自行将json-server部署到支持Node.js运行环境的服务器,不可依赖typicode的公共演示服务。
内容的提问来源于stack exchange,提问作者Victor
相关产品推荐
相关产品推荐

