尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

FakeStoreAPI 踩坑实录:本地 REST API 部署与接口调用排错全链路

FakeStoreAPI 踩坑实录:本地 REST API 部署与接口调用排错全链路 FakeStoreAPI 踩坑实录本地 REST API 部署与接口调用排错全链路【免费下载链接】fake-store-apiFakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data项目地址: https://gitcode.com/gh_mirrors/fa/fake-store-api项目 30 秒速览FakeStoreAPI 是一个提供伪真实电商 JSON 数据的免费 REST API用 Node.js Express 写接口MongoDB 存数据让你不写后端就能跑通购物网站原型、接口联调和测试用例。路由分布在routes/目录数据模型在model/目录想确认某个接口行为时直接翻这两个目录最快。高频排错链路这是新手最容易卡住的三段服务起不来、测试跑不通、接口调不通。按部署启动 → 运行时异常 → 接口调用的顺序排查每一段都能落到一条可执行的命令上。⚡ 本地起不来部署报错端口连不上症状npm start后进程不退出但访问被拒绝对就是curl: (7) Failed to connect那行。排查路径→ 确认数据库没连上server.js里app.listen写在mongoose.connect(...).then(...)的回调里数据库连不上端口根本不会打开。而.catch分支只console.log(err)不退出所以进程看起来活着。看终端输出里有没有connect字样没有就是数据库这关没过。tail -n 20 /var/log/dummy.log 2/dev/null; npm start # 观察终端是否打印 connect→ 核对 .env 配置仓库自带的.env里DB_HOSTdb、DATABASE_URLmongodb://$DB_USERNAME:$DB_PASSWORD$DB_HOST:$DB_PORT/$DB_NAME?authSourceadmin这套配置是给 docker-compose.yml 里的db容器解析的。本地直跑npm start时主机名db解析不了连接直接失败.env缺失时dotenv拿不到DATABASE_URLmongoose也会拒连。grep DATABASE_URL .env→ 起好数据库再重启用docker compose up -d db起 mongo 容器或把DB_HOST改成localhost指向本地 MongoDB改完必须重启进程让dotenv重新加载。docker compose up -d --force-recreate验证curl -s -o /dev/null -w %{http_code} http://localhost:8765/products返回200就算修好了。注意.env默认PORT8765别顺手写成 3000。⚡ 测试跑不通运行时异常 Cannot find module症状执行npm testJest 直接报Cannot find module ../app一个用例都没跑。排查路径→ 复现错误定位入口单独跑一个用例确认不是偶发报错都指向__test__里的require(../app)npx jest __test__/user.spec.js→ 核对仓库入口文件find_files一下根目录你会发现只有server.js没有app.js。__test__/下三个 spec 都 require 一个不存在的入口文件测试套件和当前代码结构脱节这是仓库自身的问题不是你环境的问题。→ 绕过测试直接验证接口把跑测试从待办里划掉先用下面这条验证服务本身测试问题留待 项目 Issues 搜索Cannot find module或提交新 Issue。curl -s http://localhost:8765/users | head -c 200验证/users能返回 JSON 数组说明 API 服务本身没问题npm test的失败与你的部署无关可安全跳过。⚡ 接口调不通端口 404 与 POST 无响应症状GET请求报ERR_CONNECTION_REFUSED或 404POST /products返回data is undefined。排查路径→ 确认实际监听端口本地部署的 FakeStoreAPI 默认监听 6400.env里有PORT时以.env为准而网上多数示例写的是 3000。端口错了就是拒连这不是接口路径的问题。grep PORT .env→ 核对请求路径与参数对照 路由定义 确认端点拼写比如取某类目商品是/products/category/jewelery取分类列表是/products/categories路径错一个词就 404。curl -s http://localhost:8765/products?limit3→ 给 POST 带上 JSON 头controller/product.js里先判断req.body是否为undefined就直接返回错误。用裸fetch发 POST 时如果不带Content-Type: application/jsonexpress.json()不会解析请求体req.body就是undefined。fetch(http://localhost:8765/products, { method: POST, headers: { Content-Type: application/json }, body: JSON.stringify({ title: test product, price: 13.5, description: lorem ipsum set, image: https://i.pravatar.cc, category: electronic }) });验证curl -s -X POST -H Content-Type: application/json -d {title:t,price:1} http://localhost:8765/products能拿到带id字段的 JSON 返回接口调用这条链路就通了。收尾排错思路就一句话先看进程有没有连上数据库再看端口和路径对不对最后才怀疑代码。仍无法解决时建议到项目 Issues 搜索报错关键词ERR_CONNECTION_REFUSED或Cannot find module或提交新 Issue 附上终端完整输出。【免费下载链接】fake-store-apiFakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data项目地址: https://gitcode.com/gh_mirrors/fa/fake-store-api创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表