使用Node.js / ES6为第三方API构建类吗?

时间:2018-11-17 23:51:09

标签: javascript api class ecmascript-6

我正在尝试重组正在构建的小应用程序。我正在使用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 {


}

但是我会在构造函数中传递密钥吗?我将如何设置路线?它们应该只是类方法吗?

任何建议将不胜感激!

0 个答案:

没有答案
相关问题