从URL请求JSON数据并向文档发送响应
我试图发送一个请求到一个返回JSON的API,然后在我自己的url中显示该请求,但当我运行此代码时,它显示控制台上有来自API的响应,但它无法将其发送到文档usingres。send我需要一些帮助,以知道我可以将该请求发送到哪里,而不仅仅是在控制台中。还有一个问题,我这样做是正确的还是应该使用路由器?多谢各位从URL请求JSON数据并向文档发送响应,json,node.js,express,node-request,Json,Node.js,Express,Node Request,我试图发送一个请求到一个返回JSON的API,然后在我自己的url中显示该请求,但当我运行此代码时,它显示控制台上有来自API的响应,但它无法将其发送到文档usingres。send我需要一些帮助,以知道我可以将该请求发送到哪里,而不仅仅是在控制台中。还有一个问题,我这样做是正确的还是应该使用路由器?多谢各位 // Include Express library var express = require('express') var app = express() // Inlcude Req
// Include Express library
var express = require('express')
var app = express()
// Inlcude Request library
var request = require('request')
// Inlcude Http / Https library
var http = require('http')
var https = require('https')
app.use('/postman/tracks', function (req, res) {
res.setHeader('Content-Type', 'application/json');
var carrier = req.query.carrier
var number = req.query.number
var url = 'http://api.goshippo.com/v1/tracks/' + carrier + '/' + number
var response = request({
url: url,
json: true
}, function (err,res,obj) {
if (!err && res.statusCode === 200) {
console.log(JSON.stringify(obj))
//res.send(JSON.stringify(obj))
}
})
})
问题在于,您正在使用
请求res
对象覆盖express
res
app.use('/postman/tracks', function (req, res) {
//...
request({
url: url,
json: true
}, function (err,response, obj) { //Changed res with response
if (!err && response.statusCode === 200) {
console.log(JSON.stringify(obj))
//res.send(JSON.stringify(obj))
res.json(obj)
}
})
})
问题在于,您正在使用请求res
对象覆盖express
res
app.use('/postman/tracks', function (req, res) {
//...
request({
url: url,
json: true
}, function (err,response, obj) { //Changed res with response
if (!err && response.statusCode === 200) {
console.log(JSON.stringify(obj))
//res.send(JSON.stringify(obj))
res.json(obj)
}
})
})
对嵌套回调使用相同的变量名res
是问题的根源,您应该更新代码以
// Include Express library
var express = require('express')
var app = express()
// Inlcude Request library
var request = require('request')
// Inlcude Http / Https library
var http = require('http')
var https = require('https')
app.use('/postman/tracks', function (req, res) {
res.setHeader('Content-Type', 'application/json');
var carrier = req.query.carrier
var number = req.query.number
var url = 'http://api.goshippo.com/v1/tracks/' + carrier + '/' + number
var response = request({
url: url,
json: true
}, function (err, response ,obj) {
if (!err && response.statusCode === 200) {
console.log(JSON.stringify(obj))
res.json(obj);
}
})
})
对嵌套回调使用相同的变量名res
是问题的根源,您应该更新代码以
// Include Express library
var express = require('express')
var app = express()
// Inlcude Request library
var request = require('request')
// Inlcude Http / Https library
var http = require('http')
var https = require('https')
app.use('/postman/tracks', function (req, res) {
res.setHeader('Content-Type', 'application/json');
var carrier = req.query.carrier
var number = req.query.number
var url = 'http://api.goshippo.com/v1/tracks/' + carrier + '/' + number
var response = request({
url: url,
json: true
}, function (err, response ,obj) {
if (!err && response.statusCode === 200) {
console.log(JSON.stringify(obj))
res.json(obj);
}
})
})
您可以使用res.json(obj)
directly@MahmoudEzzat我试过了,在控制台上它说:res.json不是一个可以使用的函数res.json(obj)
directly@MahmoudEzzat我试过了,在控制台上它说:res.json不是函数谢谢!我的错谢谢!我的错误