我正在构建一个single-page application
withVue
和laravel
API作为后端。我尝试过packages
类似Vue Session的方法,但效果很好,但是在几乎每个API
调用中,我总是需要发送2或3个始终相同(存储在中vue-session
)的参数,例如user_id
和company_id
。我以前在其他应用程序中使用common PHP sessions
(Zend_Session
with Zend Framework
)来管理此问题,因此,我始终将这些信息存储在我的应用程序中,backend
session
而不必每次都通过frontend
这是我以前如何做的一个例子 PHP session
$model->insert(array(
'user_id' => $this->session->user_id, //stored in session
'company_id' => $this->session->company_id, //stored in session
'field1' => $this->getParam('field1'), //frontend param (ajax)
'field2' => $this->getParam('field2') //frontend param (ajax)
));
这就是我Vue
与Laravel
const data = {
user_id: this.$session.get('user_id'), //this is what i'm trying to get rid of
company_id: this.$session.get('company_id'), //this is what i'm trying to get rid of²
field1: this.field1,
field2: this.field2
}
axios
.post('/api/some/endpoint', this.data)
.then(resp => {
//...//
})
基本上,在此示例中,我不需要总是发送user_id
和company_id
作为post
param
。
在这种情况下,有什么办法可以使代码更好地“重用”?
1,您可以将会话数据保存在cookie中。浏览器将自动将您的cookie发送到服务器。用户注销时,请不要忘记删除cookie。
2,如果您仍然想使用Vue会话或其他存储,则可以轻松地创建一个包装post方法并将用户信息添加到有效负载中的方法
function postRequest(url, payload) {
payload.user_id = this.$session.get('user_id')
payload.company_id = this.$session.get('company_id')
return axios.post(url, payload)
}
每当您要发布信息时,请使用此方法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句