我將從一些上下文開始: 我有一個RESTful API服務器,其中包含用於管理用戶的路由;例如是否可以重新指定req.params?
PUT .../users/:id/profile
由於我們的認證流程的一部分,我們驗證用戶的身份,並與我們的IDP檢索到的ID相符的網址比較ID。
我想要做的是實現'我'替換方法;用戶不需要在url中提供他們的id,而是可以簡單地提供'me',而id將根據其身份驗證從IDP中檢索到的id重新分配。我見過Google爲他們的一些API做這件事。例如。 .../users/me/profile
到目前爲止,我一直在嘗試一個簡單的替換假設修改req.params將向前傳播:這是沒有工作,所以
req.params.id = req.params.id === 'me'
? session.id
: req.params.id
我做了一些閱讀了上它顯然req.params獲取與每個中間件函數(當調用.use()時),所以重新分配req.params.id不會傳播整個應用程序,如我所希望的。
目前我們所有的業務邏輯都從req.params中提取id,所以我想知道是否有辦法讓上述行爲能夠避免重構我的所有業務邏輯?
據我所知,req.params是通過解析url來構建的;所以將修改網址是一個選項?用id代替'我';所以req.params是按照預期填充的?如果是這樣,這怎麼能實現呢?或者,如果你有更好的選擇讓上面的'我'替換行爲起作用,那麼我全部都是耳朵!
...如果用戶的ID沒有在URL中提供,應該在其他地方提供。否則,您的RESTful應用程序如何知道用戶的ID? – blewherself
是的,我們可以從認證流程中檢索到id;然而問題是我所有的邏輯檢查id的req.params.id。我正在嘗試這樣做,將身份驗證流中收到的ID注入req.params.id。 – Mitch
明白了...然後你試圖分配'req.params.id'應該可以工作。剛剛測試過,一切都很好,即你可以指定'req.params.id'任何你想要的。你有沒有嘗試爲/ users/me/profile創建新路線? – blewherself