私はいくつかの文脈から始めます: 私はユーザーを管理するためのルートを含むRESTfulなAPIサーバーを持っています。例えばexpressでreq.paramsを再割り当てすることはできますか?
PUT .../users/:id/profile
は、当社の認証フローの一環として、我々は、ユーザーの身元を確認し、私たちのIDPから取得したIDを持つURLにIDを比較します。
私がやっていることは、「私の」代替アプローチを実装することです。ユーザーは、自分のIDをURLに提供するのではなく、代わりに 'me'を提供するだけで、そのIDに基づいてIDから取得したidでIDを再割り当てすることができます。私はGoogleがいくつかのAPIでこれを行うのを見た。例えば。
req.params.id = req.params.id === 'me'
? session.id
: req.params.id
これは、私が上の読みのビットをやったので、働いていませんでした。これまでのところ、私は修正req.paramsが前方に伝播することを前提と簡単に交換をしようとしてきた .../users/me/profile
それと明らかにreq.paramsは各ミドルウェア関数(.use()が呼び出されたとき)でビルドされているので、req.params.idの再割り当ては私が望むようにアプリ全体に伝播しません。
私たちのビジネスロジックはすべてreq.paramsからIDを取得しますので、私のビジネスロジックをすべてリファクタリングしないように上記の動作をする方法があるのだろうかと疑問に思っていましたか?
私はreq.paramsがurlの解析から構築されていることを理解しています。したがって、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