所以,假設我有/api/cat/fact.js目錄。
我想從catfact.ninja獲取 JSON 資料
問題是,我不能使用要求()或請求()包,因為如果我使用的需要,這將沙耶不可能找到模塊......,如果我使用的要求,而不是回傳JSON資料之一,你比布爾在catfact.ninja 中看到,它回傳關于 api 的 JSON,如主機名、埠,這是我不需要的
/API/api/cat/fact.js:
const express = require('express');
const app = express.Router();
const request = require('request')
app.use('', (req, res) => {
const src = 'https://catfact.ninja/fact';
const facts = request({
uri: src,
hostname: 'catfact.ninja',
port: 443,
path: '/fact',
method: 'POST',
json: 'fact'
}, (error, response, body) => {
if (error) console.log(error)
console.log(body, '\n\n' response.fact)
})
console.log(facts);
return res.jsonp(facts)
})
module.exports = app;
uj5u.com熱心網友回復:
您在錯誤的位置回傳 JSON。它應該在回呼函式內部回傳。
這是解決方案:
const express = require('express');
const request = require('request-promise')
const app = express();
app.use('', async (req, res) => {
const src = 'https://catfact.ninja/fact';
try {
const response = await request({
uri: src,
port: 443,
method: 'GET',
json: true
})
return res.jsonp(response)
} catch (err) {
return res.jsonp(err)
}
})
function startServer() {
const port = 3000
app.listen(port, () => {
console.info('Server is up on port ' port)
})
app.on('error', (err) => {
console.error(err)
process.exit(1)
})
}
startServer()
提示:我建議使用request-promisenpm package 而不是requestpackage,因為它提供了 async-await 方法,這更干凈。否則,您可以繼續使用回呼函式作為第二個request()函式引數。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310807.html
標籤:javascript 节点.js 接口 表达
