【发布时间】:2020-02-17 09:54:37
【问题描述】:
我正在尝试 1) 从 React 表单中获取用户输入 2) 将其传递给 node.js 服务器 3) 然后传递给外部 API 搜索结果。 1 和 2 工作正常,但我无法弄清楚 #3。如何构造我的代码,以便我可以将用户输入/发布请求的结果传递给这个调用?
return spotifyApi.getArtistTopTracks('user input', 'US');
server.js
const server = express();
const router = express.Router();
const cors = require('cors');
const bodyParser = require('body-parser');
const logger = require('morgan');
const helmet = require('helmet');
const SpotifyWebApi = require('spotify-web-api-node');
const port = process.env.PORT || 5000;
server.use(logger('dev'));
server.use(cors());
server.use(bodyParser.urlencoded({ extended: false }));
server.use(bodyParser.json());
server.use(helmet())
server.listen(port, () => console.log(`Listening on port ${port}`))
module.exports = server;
var urlencodedParser = bodyParser.urlencoded({ extended: false })
server.get('/search', function (req, res) {
res.send({query: req.query})
})
server.post('/search', urlencodedParser, function (req, res) {
console.log(req.body)
res.send({query: req.query})
})
let credentials = {
clientId: 'clientId',
clientSecret: 'clientSecret',
redirectUri: 'http://localhost:5000/callback'
}
let spotifyApi = new SpotifyWebApi(credentials);
spotifyApi.clientCredentialsGrant()
.then(function(data) {
console.log('The access token expires in ' + data.body['expires_in']);
console.log('The access token is ' + data.body['access_token']);
spotifyApi.setAccessToken(data.body['access_token']);
return spotifyApi.getArtistTopTracks('4TMHGUX5WI7OOm53PqSDAT', 'US');
})
.then(function(data) {
server.get('/tracks', (req, res) => {
res.send(data.body);
})
console.log('The most popular tracks are:');
let ids = data.body.tracks.map(track => track.id);
console.log(ids)
return spotifyApi.getAudioFeaturesForTracks(ids)
.then(function(data) {
server.get('/tracks/audio_features', (req, res) => {
res.send(data.body);
})
console.log(data.body);
}, function(err) {
done(err);
})
}),
function(err) {
console.log('Something went wrong!', err);
}```
【问题讨论】:
-
你想从 spotifyApi.getArtistTopTracks api 获取曲目并在你的 server.post('/search' 路由中返回响应吗?
-
@SuleymanSah 我想接受用户输入,传递给 spotifyApi.getArtistTopTracks api 并返回响应。
-
在这里? server.post('/search' 路由,你的搜索词的查询参数的名称是什么?
-
查询:req.query
-
请问一下?像这样结束: /?id=1234 ?
标签: node.js reactjs express api-design