2016-08-31 17 views
0

NodeJSを使用して、私がアクセスできるプライベートAPIにPUTリクエストを送信しています。 curlを使用するとAPIがJSONを返信し、すべて正常に機能しますが、NodeJSを使用する場合は何も返送しません。私はこれに非常に新しいですし、私のコードが最高ではないことを知っていますが、(この1つの問題以外の)動作します。私はJSONを表示する方法を私は、端末のPUT要求から取得する必要がありますかと思います。PUTリクエストの応答を取得する

NodeJS Serverコード:

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)になったときにJSONを取得しました。私はAPIに送信しています。 私が console.log(error)になると、Nullが返されます。 How to retrieve POST query parameters?
How to retrieve POST query parameters?

+0

ずにrequest' 'に提供するコールバックは –

+0

に何が起こっているかを決定するのに役立つかもしれない、どちらも' ERROR'、と 'body'、Iましたが、'受け取ります私が質問を編集して回答を掲示します – 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あなたは「何も来ません」と言った。あなたは '体は'何も持っていないという意味ですか? –

関連する問題