Express 快递路线混乱
我有以下端点来访问会话的实例:Express 快递路线混乱,express,Express,我有以下端点来访问会话的实例: <base-url>/sessions/<id> 我可以在浏览器中看到使用了正确的端点: <base-url>/sessions/117 它很好用。这个选项不适合我,因为它也会匹配端点,比如/sessions/111/user,这不是重点 我怎样才能解决这个问题,只抓住我需要抓住的东西 更新: 我在发表评论后没有什么更新。 我试图简化这个问题,但可能有个问题。我使用的是两级快速路由器 在主web服务器应用程序中: var a
<base-url>/sessions/<id>
我可以在浏览器中看到使用了正确的端点:
<base-url>/sessions/117
它很好用。这个选项不适合我,因为它也会匹配端点,比如/sessions/111/user,这不是重点
我怎样才能解决这个问题,只抓住我需要抓住的东西
更新:
我在发表评论后没有什么更新。
我试图简化这个问题,但可能有个问题。我使用的是两级快速路由器
在主web服务器应用程序中:
var app = express();
app.use("/api/admin", admin_router); // this should sent all the admin-requests to a subrouter admin_router
管理路由器的相关工作代码:
var router = express();
router.patch("/sessions/:id*", tryLogout); // sends 404 without the *
在前端,我使用主干模型发送请求。相关代码:
...Backbone.Model.extend({
urlRoot: "api/admin/sessions",
idAttribute: "id",
logout: function(callback) {
var attr = {
// sets the atts here
}
this.save(attr,{
patch: true,
success: function(data) {
callback(null, data)
},
error: function(err) {
// error handling
}
});
} // logout()
这对我来说很管用。你到底是如何使用路由器的?你可能使用app.param吗?我不明白这个问题。我甚至没有在那一点上使用它,它不匹配。我使用的是E router.patch,如图所示。可能的原因不匹配:您没有对请求使用patch方法不太可能,否则*不会产生任何影响,您没有正确设置基本URL,您使用app.param验证:id参数,并且存在问题,您使用的是严格的路由,并且不小心在末尾添加了斜杠,这是中间件导致的问题。可能还有更多…我会在那里做一些更新来回答这个问题,实际上,有两个路由器
var router = express();
router.patch("/sessions/:id*", tryLogout); // sends 404 without the *
...Backbone.Model.extend({
urlRoot: "api/admin/sessions",
idAttribute: "id",
logout: function(callback) {
var attr = {
// sets the atts here
}
this.save(attr,{
patch: true,
success: function(data) {
callback(null, data)
},
error: function(err) {
// error handling
}
});
} // logout()