MEAN.js $ http.get()返回索引html内容而不是json文件

时间:2016-10-06 08:31:04

标签: meanjs

我正在做一个基于原始MEAN.js框架的网络应用程序。当我想在我的AngularJS文件中使用$ http.get()方法请求本地json测试文件时,它返回了我的索引html内容。这是路由问题吗?我没有改变原来的mean.js路由代码(https://github.com/meanjs/mean),只是在home.client.controller.js文件中添加了一个$ http.get()方法。谁能帮我这个?谢谢!

1 个答案:

答案 0 :(得分:0)

这很有可能发生,因为您没有在应用中为该特定GET请求定义端点。

每当您向服务器发出请求时(例如对/my-request的GET请求),在MEAN.js中配置nodejs / express,以便您的服务器尝试查找该请求的端点,如果是找不到,该请求将由此特定代码块(在/modules/core/server/routes/core.server.routes.js中指定)处理:

// Define application route
app.route('/*').get(core.renderIndex);

这将基本上呈现索引视图。

我不确定您是否正在使用自定义模块,如果您希望在MEAN.js中以不同的方式处理该请求,您可以在自定义中指定您的端点模块路由文件(或core.server.controller.js),如下所示:

// Define application route
app.route('/my-request').get(core.sendMyJSON);

要小心,因为这条路线必须放在之前我之前提到的那条路线,否则您的请求仍将以相同的方式处理,索引视图将被渲染并再次提供。

然后,您必须创建应该调用的控制器来处理该请求:

exports.sendMyJSON = function (req, res) {
    // logic to serve the JSON file
};

这样你就可以通过一些调整来完成它。

旁注: 我不完全确定,但我认为如果您将JSON文件放在应用程序的公共目录中,您应该能够直接访问它而无需额外的逻辑。