我正在构建一个single-page application
,Vue
和laravel
API 作为后端。 我已经尝试了一些像 Vue Session 这样的packages
并且效果很好,但是在几乎每个API
调用中,我总是需要发送 2 或 3 个参数,这些参数将始终相同(存储在vue-session
中(,例如user_id
和company_id
。我曾经在其他应用程序中使用通用PHP sessions
(Zend_Session
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)
}
每当您想发帖时,请使用此方法。