当用户点击某个端点时,我有以下在服务器上调用的函数,例如/api/login
我在服务器上处理它,因为我想设置serverside cookie来存储身份验证令牌。目前它看起来像这样:
const createSession = (req, res, url) => {
const apiCall = request.post(url, (err, response, body) => { // eslint-disable-line
if (err) return res.sendStatus(500);
else if (response.statusCode !== 200) return res.status(response.statusCode).send(body);
const data = JSON.parse(body);
const options = { path: '/', hostOnly: true, httpOnly: true, maxAge: 3300000 }; // 55 min expiration
if (secrets.DOMAIN !== 'localhost') options.secure = true;
res.cookie('SESSION_TOKEN', data.token, options);
res.cookie('SESSION_EMAIL', data.email, options);
res.status(200).send(body);
});
req.pipe(apiCall);
};
并且它有效,但我发现它非常冗长,并且不确定是否有更好的方法来处理这个问题,除了请求库之外还有什么其他的东西?我试图用节点的http来解决这个问题,但从来没有。
以下是在我的快速服务器中使用此功能的示例:
app.post('/api/login', (req, res) => {
const url = `${secrets.API_HOST}/login`;
createSession(req, res, url);
});