使用Express.js进行RESTful路由:为什么Express的res.redirect会改变静态资产的位置?

时间:2015-08-13 05:17:49

标签: node.js express restful-url

这几乎肯定是我个人的概念误解。有人可以帮我理解我在哪里出错吗?

我真的想在Express.js项目中坚持RESTful路由实践。我正在使用EJS,我正在使用标准服务提供静态资产......

app.use(express.static(__dirname + '/public'));

虽然Express文档似乎没有明确提到res.redirect到路由(而不是文件路径),但它可以工作,我在假设这是标准做法的情况下运行。并且,只要路径路径名的深度只有一个(如/ range,但不喜欢/ range / edit),所有这一切都可以正常工作。

但是,当然,实际的RESTful路由实践涉及的深度比这更深......

  • 行动 - 路线 - HTTP VERB
  • list - / users - GET
  • show - / users / 1 - GET
  • 编辑 - / users / 1 / edit - GET
  • new - / users / new - GET
  • 创建 - /用户 - POST
  • 更新 - / users / 1 - PATCH
  • 删除 - / users / 1 - DELETE

res.redirect()非常适合RESTful路径,因为URL路径名正确无误。

但是,当我使用Express res.redirect到具有两个或更多深度级别的路径时 - 例如/ users / new - 我的EJS文件不再找到我的静态资产。它不是查找正确的目录,而是将/users/子目录添加到静态文件路径中。

我在Google搜索中观察到这必定是预期的行为。

如何在仍然使用重定向和EJS与Express.js的同时实现RESTful路由系统?

或者,如果我只是使用重定向来导航路径而不是路由,那么设置这些RESTful路由的正确方法是什么?

我注意到在不使用res.redirect的情况下,趋势是在我的路由中出现大量代码重复,多个res.render基本上做同样的事情,并且URL路径名的附加问题反映了无论什么路由渲染起源于(而不是我更喜欢的RESTful路线)。次优的。

我必须遗漏一些基本的东西......

0 个答案:

没有答案