我有一个基于 Rails 4 的 API,它使用 Devise 进行身份验证,并且需要user_token
对user_email
每个 api 调用进行身份验证。发送的凭据基于当时使用该应用程序的用户。
我正在为我的前端使用 Spine.js,并希望获得一些建议,了解将这些附加参数包含到客户端进行的每个 AJAX 调用中的最佳方法。
在 Spine 中,我有一个 Session 模型,它在用户登录时将我的 API 返回的所需详细信息持久化(到本地存储)。
我想到了几种方法……</p>
通过@url 属性,但我需要修复它以在每个模型中工作,就像这样......</p>
class User extends Spine.Model
@configure 'User', 'name', 'email', 'image_url'
@extend Spine.Model.Ajax
@url: '#{Spine.model.host}/users/?user_token=foo&user_email=bar'
…也许更合适的方法是创建一个扩展该@url
方法并每次附加这些参数的基本模型。然后,我的每个其他模型都可以从这个基本模型继承来稍微干燥一下。
与上面类似,我可以扩展我使用的每个模型函数,以在每次进行 API 调用时附加这些附加参数。例如,我可以看看扩展@fetch()
功能。像这样的……</p>
class User extends Spine.Model
@configure 'User', 'name', 'email', 'image_url'
@extend Spine.Model.Ajax
@fetch (params) ->
params or=
data: {user_token: 'foo', user_email: 'bar'}
processData: true
super(params)
或者我的第三个想法是我是否可以扩展Spine.Model.Ajax
以将我的附加参数附加到每个 api 调用的末尾,将它完全从模型中抽象出来,所以我不需要扩展任何模型函数甚至使用@url
属性,因为默认情况下它按我的需要工作,除了我需要发送的这些额外凭据。
或者,我的方法可能完全错误,我可能忽略了一些更简单的事情(我希望如此)。
免责声明:我没有测试任何上述代码,只是在我的思考过程中记下它。
我的一个 HTTP 调用的示例(暂时在 dev 中)是:http://dev.myapp.com:5000/api/v1/posts?user_token=foobar&user_email=foo@bar.com