【发布时间】:2021-04-07 09:23:24
【问题描述】:
我正在使用 Nuxt。我正在尝试使用 Zoom 的 API,该 API 坚持要求我进行服务器端调用。于是我做了一个serverMiddleware,看起来像这样:
require('dotenv').config
const https = require('https')
const querystring = require('querystring')
export default function(req, res){
if (req.method === 'GET'){
const url = new URL(req.url, `http://${req.headers.host}`)
let host = 'zoom.us'
let tail = '/oauth/token?'
let query = querystring.stringify({
grant_type: 'authorization_code',
code: url.searchParams.get('code'),
redirect_uri: process.env.NUXT_ENV_BASE_URL
})
let data = process.env.NUXT_ENV_ZOOM_CLIENT_ID + ':' + process.env.NUXT_ENV_ZOOM_CLIENT_SECRET
let newData = Buffer.from(data, 'utf8')
let b64string = newData.toString('base64')
function getZoomAccessToken(){
const options = {
hostname: host,
path: tail + query,
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Basic ' + b64string
}
}
return https.request(options, response => {
let data = ''
response.on('data', (chunk) => {
data += chunk.toString()
})
response.on('end', () => {
console.log(JSON.parse(data));
})
})
.on('error', (error) => {
console.log('An error', error)
})
.end()
}
let body = getZoomAccessToken()
console.log(body)
res.writeHead(200, {
'Content-Type': 'application/json'
})
res.end(body)
}
}
如您所见,我在尝试从 https.request 回调中获取数据时遇到了麻烦。如何确保我可以将响应返回给客户端?
更新:为了添加更多上下文,body 返回请求,而不是任何响应。我认为将 https.request 函数包装在另一个函数中有助于捕获响应,但它不起作用。我不熟悉 Node,所以我知道这需要我重写。我只是想知道我应该如何重写它。
【问题讨论】:
-
勾选这个
require('dotenv').config需要调用config函数:require('dotenv').config() -
谢谢,但这不是问题。
标签: node.js api nuxt.js nuxtjs