router.get 没有参数但要求参数
router.get without parameter but asking for param
我正在尝试使用 express nodejs 和 JWT。这是我所经历的源代码:link.
我保护所有路由,除了我在 jwt.js 文件中声明的路由。
'/trial'
url,不受保护。控制器在trial.controller.js
文件中。当我在邮递员中使用 get
和 post
方法并且没有任何身份验证(No Auth
)时点击 url,我得到了我所期望的。
- 但是,当我点击
'/users/testdata'
时,同样的事情不会发生。它不受保护,但如果我使用 get
方法点击它并且没有任何身份验证,它会 returns error 500
在邮递员中显示消息 "Cannot read property 'sub' of undefined"
。但是,当我用 post
方法点击它时,我得到了我期望的结果。
那么,get
方法有什么问题?
完整代码请见上文link。任何帮助对我来说意义重大。谢谢!
出现问题是因为路由router.get('/:id', getById);
定义在路由router.get('/testdata', getTest);
之前。因此,当您对 /testdata
路由执行请求时,它由 /:id
路由处理,需要身份验证才能工作,并使用 currentUser.sub
属性,尽管 currentUser
变量当前未定义。
只需更改顺序
router.get('/:id', getById);
router.get('/testdata', getTest);
到
router.get('/testdata', getTest);
router.get('/:id', getById);
我正在尝试使用 express nodejs 和 JWT。这是我所经历的源代码:link.
我保护所有路由,除了我在 jwt.js 文件中声明的路由。
'/trial'
url,不受保护。控制器在trial.controller.js
文件中。当我在邮递员中使用get
和post
方法并且没有任何身份验证(No Auth
)时点击 url,我得到了我所期望的。- 但是,当我点击
'/users/testdata'
时,同样的事情不会发生。它不受保护,但如果我使用get
方法点击它并且没有任何身份验证,它会 returnserror 500
在邮递员中显示消息"Cannot read property 'sub' of undefined"
。但是,当我用post
方法点击它时,我得到了我期望的结果。
那么,get
方法有什么问题?
完整代码请见上文link。任何帮助对我来说意义重大。谢谢!
出现问题是因为路由router.get('/:id', getById);
定义在路由router.get('/testdata', getTest);
之前。因此,当您对 /testdata
路由执行请求时,它由 /:id
路由处理,需要身份验证才能工作,并使用 currentUser.sub
属性,尽管 currentUser
变量当前未定义。
只需更改顺序
router.get('/:id', getById);
router.get('/testdata', getTest);
到
router.get('/testdata', getTest);
router.get('/:id', getById);