RESTful ユーザー登録, パスワードリカバリ
REST本があまり参考にならなかった罠。email や パスワード のような本人確認が必要なリソースを作成する、という点をどうするか?
まず登録。
- POST /users
GET /users/{:id}/registration_prepared- GET /users/{:id}/registration_confirmation?key={temporary key}
こんな感じだろうか。で、パスワードリセット
- POST /users/{:id}/new_password
GET /users/{:id}/new_password_prepared- GET /users/{:id}/new_passward_confirmation?key={temporary key}
。。うーん、RESTfulとは相性が悪いというか、この辺はコンピュータだけで済ませないために、「メールなどで確認する」という人的プロセスを経ているわけで*1。。
修正。よく考えたらpreparedは、あまり意味がないことにきがつく。HTTPの表現力で、送信されたことを機械的に表現する手段がないではないか? SMTPのURIをふってというのも、現実的ではないし。結局、クライアント側は200が返されたときの次のアクションは、APIドキュメントによって確認して、しかるべき対応をする、というのが解か。
あと、GET *_confirmation が正しいかどうかはわからないが、メールクライアントからブラウザに対しては、URIは渡せるけど、HTTP Methodは渡せないので、仕方がない、といったところか。もちろん Rails なら _method=post とかすればいいんだろうけど。
RPC形式のWebサービスなら、あまり考えずに、準備用RPCと確定用RPCを用意すればいいんだろうけど。
*1:例えば、オンラインショップの決済には確認画面が必要、といった法律関係