快速路由混淆

时间:2015-04-24 14:23:30

标签: express

我有以下端点来访问我的会话的实例:

<base-url>/sessions/<id>

我尝试使用以下行捕获对此端点的请求:

router.patch("/sessions/:id", tryLogout);   

我可以在浏览器中看到使用了正确的端点:

<base-url>/sessions/117

然而,快递返回404 -

当我现在添加*时:

router.patch("/sessions/:id*", tryLogout);  

它工作正常。这个版本不适合我,因为它也会匹配像/ sessions / 111 / user这样的端点,这不是重点。

我该如何解决这个问题,只抓住我需要抓到的东西?

更新

评论后我几乎没有更新。 我试图简化问题,但可能存在问题。我正在使用两级快速路由器。

在主网络服务器应用中:

var app = express();
app.use("/api/admin", admin_router);   // this should sent all the admin-requests to a subrouter admin_router

admin_router的相关(工作)代码:

var router = express();
router.patch("/sessions/:id*", tryLogout);  // sends 404 without the *

在前端,我使用Backbone模型发送请求。相关的代码:

...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()

0 个答案:

没有答案