我目前有一个非常标准的 REST API 服务:
show: GET /users/1
update: PUT /users/1
...以及一些遵循相同约定的 has_many 关系:
show: GET /users/1/friends/1
update: PUT /users/1/friends/1
但是,还有一个 EAV 表来处理设置(抱歉,这部分不会更改),设置为充当 has_one 关系。内部:
user.settings # returns {:sound => true, :tutorials => true}
user.update_settings # expects {:sound => false}
它在本地运行良好,但没有 ID 可以像其他路由一样工作。相反,可以像这样设置路线:
show: GET /users/1/settings
update: PUT /users/1/settings
这是处理此问题的正常方法,还是有其他一些我不知道的约定?