super-request
super-request copied to clipboard
Chaining requests passing arguments between request not possible
Passing argument from one request response to another request is currently not possible
Expected behavior is to pass token from first response to next post request: Actual behavior is token is undefined.
var token;
request
.post('/token')
.auth({user: user.username + '#' + user.company, pass: user.password})
.json(true)
.end(function(err, res) {
if (err) {
return done(err);
}
token = res.body.access_token;
})
.post('/users')
.headers({'Authorization': 'Bearer ' + token})
.json(users)
.end(function(err, res) {
done();
});
The current workaround is to use then:
request
.post('/token')
.auth({user: user.username + '#' + user.company, pass: user.password})
.json(true)
.end(function(err, res) {
if (err) {
return done(err);
}
token = res.body.access_token;
}).then(function () {
request
.post('/users')
.headers({'Authorization': 'Bearer ' + token})
.json(users)
.end(function(err, res) {
done();
});
});
This is still an issue. I was trying the same exact thing.
If you use ES6 you can use a Proxy (I actually haven't tested it with headers, but should work):
"use strict";
class Header {
get Authorization() {
return this._auth;
}
set Authorization(value) {
this._auth = value;
}
}
const hd = new Header();
request
.post('/token')
.auth({user: user.username + '#' + user.company, pass: user.password})
.json(true)
.end(function(err, res) {
if (err) {
return done(err);
}
hd.Authorization = 'Bearer ' + res.body.access_token;
})
.post('/users')
.headers(hd)
.json(users)
.end(function(err, res) {
done();
});