2016-08-31 51 views
0

我正在使用NodeJS向我有权访问的私有API发送PUT请求。当使用curl时,API发回JSON,并且一切都很好,但是当使用NodeJS时,它不会返回任何东西。我对此很新,而且我知道我的代码不是最好的,但它可以工作(除了这个问题)。我想知道如何显示JSON,我应该从终端的PUT请求中恢复。检索PUT请求的响应

服务器的NodeJS代码:

app.post('/myaction', function(req, res) { 
    var data = req.body.service; 
    var data1 = req.body.serviceId; 
    console.log(data); 
    console.log(data1); 
    res.sendFile(__dirname + '/services.html'); 
    myURL = 'http://privateAPI.com/service_instance/' + data1; 
    console.log(myURL) 
request({ 
    method: 'PUT', 
    uri: myURL, 
    multipart: [{ 
     'content-type':'application/json', 
     body: data 
    }] 
    }, function(error, request, body){ 
    }) 
}); 

当我console.log(body)我得到API的HTML。 当我console.log(request)我得到我发送到API的JSON。 当我console.log(error)我得到空。

链接我读过,但并没有帮助: How to retrieve POST query parameters?
How to retrieve POST query parameters?

+0

到'request'您提供的回调接收'error'和'body',这两者可能是决定到底是怎么回事 –

+0

我已经'有帮助console.logg'ed所有他们我会编辑问题并发布他们的回复 – CtrlAltDelete

回答

1

其实你并不需要使用多。

但问题是你需要从API中设置你期望的内容类型。

request({ 
    method: 'PUT', 
    uri: myURL, 
    headers: { 
     'accept': 'application/json', 
     'content-type': 'application/json' 
    }, 
    multipart: [{ 
     'content-type':'application/json', 
     body: data 
    }] 
    }, function(error, response, body){ 
     console.log(response); 
    }) 

没有多

request({ 
    method: 'PUT', 
    uri: myURL, 
    headers: { 
     'accept': 'application/json', 
     'content-type': 'application/json' 
    }, 
    body: data, 
    json: true 
    }, function(error, response, body){ 
     console.log(response); 
    }) 
+0

非常感谢你的回复!我刚刚测试过这个代码,并且我没有收到任何错误,但终端上没有任何内容。反正有'console.log'这样我就可以看到标题了吗? – CtrlAltDelete

+0

@CtrlAltDelete我更新了我的答案。你有'响应',并可以看到标题,等等。 –

+0

@CtrlAltDelete你说“什么都没有出现”。你的意思是“身体”没有任何东西? –