Express+Angular,总是为html请求发送索引文件,而不是api请求
Express + Angular, always send index file for html requests, not api requests
我正试图让我的express应用程序始终返回"index.html",这是包含我的angular应用程序scaffold的布局文件。
在我的angular应用程序中,当我在路由"/home"时,我希望能够刷新页面,所以要做到这一点,我需要我的路由器返回index.html。
对于我的html路由,我使用以下内容-我的所有模板(home.html)都存储在/templates目录中:
var express = require("express"),
router = express.Router(),
path = require("path"),
root = path.join(__dirname, "../../");
router.use(express.static(__dirname + "/../../templates"));
router.get("*", function(req, res) {
//Response options
var options = {
root: root,
};
res.sendFile("layouts/index.html", options);
});
这显然影响了我的REST API请求,因为它们不会发回index.html.
例如,我有一个/islands api路由,它从我的mongo数据库返回"Island"对象。
var router = require("express").Router(),
Island = require("../../model/island");
router.get("/", function (req, res, next) {
Island.findOne({user_id: req.user.email}, function (error, island) {
if (error) { return next(error); }
return res.json(island);
});
});
这是现在返回我的index.html.
以下是我如何使用上面的控制器,以防有帮助。
app.use(require("./controllers/api/static")); //Returning static assets
app.use(require("./controllers/api/views")); //This is where the get route for returning .index.html is stored
app.use("/api/island",require("./controllers/api/island"));
我有点困惑,怎么才能让index.html只返回html请求,而不返回对我的api的请求。
检查路由的顺序,将api路由放在sendfile路由之前。
相关文章:
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 请求准备一个文件并返回路径,允许用户在准备好时下载
- 显示IIS上javascript文件(SOAP请求)的XML响应
- Ajax调用返回当前html页面,而不是请求的文件
- 将任何CDN配置为只传递一个文件,无论请求的url是什么
- 是否可以缓存可下载的文件,并在XHR和非XHR请求之间共享该缓存
- YUI向json文件发出ajax请求
- 在PHP中检测AJAX请求来自哪个文件
- 为什么XMLHttpRequest响应的长度和请求文件的大小不同
- 从 Google 云端硬盘请求文件元数据时缺少“downloadUrl”参数
- 如何使用
- 正在使用node.js服务器请求文件
- 请求文件不工作快递
- 为什么我必须在设备就绪中请求文件系统
- 请求文件中的假错误
- 客户端不断从 REST API 请求文件
- 浏览器请求文件,服务器下载 pdf,浏览器在 iframe 中显示 pdf
- 我正在尝试实现windows.在IE和FF下请求文件系统
- 请求.文件是空的ASP.NET
- Ruby on rails发送带有send_file的图像,并在javascript中请求文件