我正在尝试重组正在构建的小应用程序。我正在使用Spotify的API,目前,我将所有逻辑保存在一个文件中,并在那里创建了路由。我想为SpotifyClient创建一个类,为我的服务器创建另一个类,但是不确定如何进行此操作。 我有两条专门针对Spotify授权的路线,我想将其删除并放入类中:
app.get('/login', (req, res) => {
const state = generateRandomString(16);
res.cookie(STATE_KEY, state);
res.redirect(spotifyApi.createAuthorizeURL(scopes, state));
});
app.get('/callback', (req, res) => {
const { code, state } = req.query;
const storedState = req.cookies ? req.cookies[STATE_KEY] : null;
if (state === null || state !== storedState) {
res.redirect('/#/error/state mismatch');
} else {
res.clearCookie(STATE_KEY);
spotifyApi
.authorizationCodeGrant(code)
.then(data => {
const expiresIn = data.body.expires_in;
const accessToken = data.body.access_token;
const refreshToken = data.body.refresh_token;
// Set the access token on the API object to use it in later calls
SPOTIFY_TOKEN = accessToken;
spotifyApi.setAccessToken(accessToken);
spotifyApi.setRefreshToken(refreshToken);
spotifyApi.getMe().then(({ body }) => {
SPOTIFY_ID = body.id;
});
res.redirect('/search');
})
.catch(err => {
res.redirect('/#/error/invalid token');
});
}
});
我有自己的API密钥,可以将它们导出为环境变量,并将它们存储在config.js
文件的对象中。
所以开始,就像这样:
const config = require('./config');
class SpotifyClient {
}
但是我会在构造函数中传递密钥吗?我将如何设置路线?它们应该只是类方法吗?
任何建议将不胜感激!