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



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

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

每次您向服务器发出请求(例如对/my-request的GET请求)时,nodejs/express都在MEAN.js中配置,以便您的服务器将尝试找到该请求的端点,如果没有找到任何端点,该请求将由此特定代码块(在/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文件放在应用程序的公共目录中,你应该能够直接访问它,而不需要额外的逻辑。

最新更新