悦1314 2024-06-07 20:33 采纳率: 83.3%
浏览 19
已结题

后端创建API接口来获取项目首页数据,无法获取

#问题:后端创建API接口来获取项目首页数据,无法获取,从而无法进行请求接口进行数据渲染(后端真的每一步都在卡我)
#问题产生:我的操作步骤如下:在Hbuilder的server(之前用node.js 通过“express --view=ejs server”创建的server)的 router 的 index.js下写了 一个接口 如下:

router.get("/api/index_list/data",function(req,res,next) {
    
    res.json({
        "a":1
    })
    
});

img

#然后我把 localhost:3000/api/index_list/data 运行发现404,因为我写东西了想重启一下终端再运行一下看一下会不会报错,但是发现根本打不了npm start ,

img

#问题尝试:
1、然后我就各种搜索把我搜索迷糊了,一会 Express.js 一会coser(什么HBuilder可能会有跨域限制,我没有跨域 自己电脑chrome运行哪里跨域了),还有自己搭建数据库自己创建API的(虽然但是后面我可能)但是就前期开发和测试阶段一个API有这么那个复杂吗,但是我看 server/modules中的 Express.js 不用改(应该吧不太懂)
2、我又下载了Postman去测试API,结果报错了,应该是我前端出问题了,但是我不知道怎么改呜

img

#后端node.js, 前端用的 Hbuilder,API接口测试工具Postman

request help 非常感谢大家!

  • 写回答

11条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-07 21:07
    关注

    引自免费微信小程序:皆我百晓生

    根据你的描述,问题在于后端Express应用没有正确处理你创建的/api/index_list/data路由,导致前端请求时返回404错误。下面我会分步指导你如何排查和解决这个问题。

    1. 确认路由配置

    首先,请确保你的路由配置是正确的并且已经挂载到Express应用上。在你的server/router/index.js文件中,路由配置看起来是这样的:

    router.get("/api/index_list/data", function(req, res, next) {
        res.json({
            "a": 1
        });
    });
    
    // 确保这行代码存在,并且在所有路由定义之后
    module.exports = router;
    

    2. 检查路由挂载

    接下来,确认这个路由配置被正确地导入并挂载到了Express应用中。通常在app.jsbin/www文件中,你应该看到类似这样的代码:

    // 引入路由模块
    var indexRouter = require('./routes/index');
    var usersRouter = require('./routes/users');
    
    // 使用路由器
    app.use('/', indexRouter);
    app.use('/api', indexRouter); // 确保这行代码存在,用来挂载/api开头的路由
    

    注意,如果你的路由定义在index.js中,并且打算以/api开头,确保在主应用中正确挂载了这个路由处理器。

    3. 重启服务器

    修改完路由配置后,确保重新启动你的Node.js应用,以便更改生效。你提到无法执行npm start,请确保你在项目根目录下执行此命令,并检查是否有其他进程占用端口3000。可以尝试以下步骤:

    • 首先,关闭任何正在运行的Node.js服务。
    • 打开命令行工具,切换到你的项目根目录。
    • 执行 netstat -ano | findstr :3000 (Windows) 或者 lsof -i :3000 (Mac/Linux)来查看是否3000端口被占用。
    • 如果发现有占用,可以杀死进程(例如,在Windows上使用taskkill /F /PID <PID>,PID为查找到的进程ID)。
    • 然后,再次尝试执行 npm start 来启动你的应用。

    4. 测试API

    在确保服务器正常运行后,使用Postman进行测试,确保URL正确无误。正确的请求地址应为:http://localhost:3000/api/index_list/data,不需要添加额外的查询参数(除非你的后端逻辑处理了这些参数)。如果一切配置正确,你应该能收到响应{"a": 1}

    5. 跨域问题

    虽然你说没有跨域问题,但如果是前后端分离开发,记得在后端开启CORS支持,以防万一。可以在Express应用的初始化部分添加以下代码:

    var cors = require('cors');
    app.use(cors());
    

    确保先安装cors包:npm install cors

    总结

    • 检查并修正路由配置及挂载。
    • 确保服务器重启成功,没有端口冲突。
    • 使用正确的URL在Postman中测试API。
    • 检查并处理跨域问题,如果适用。

    按照上述步骤应该能解决你的问题。如果还有其他疑问或遇到新的问题,请随时反馈。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(10条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月8日
  • 已采纳回答 6月8日
  • 创建了问题 6月7日