2016-05-05 4 views
0

ich eine Locke, die wie folgt aussieht:Übersetzen curl zu Knotenanforderung

curl -X "POST" "https://theEndpoint.com" \ 
-H "Authorization: Basic theEncodedUserName/Password" \ 
-H "Content-Type: application/json" \ 
-d "{\"GETRSDATA_Input\":{\"@xmlns\":\"http://theEndpoint.com\",\"RESTHeader\":{\"@xmlns\":\"http://theEndpoint.com/header\"},\"InputParameters\":{\"P_CHANGESINCE_DATE\":\"0460070398\"}}}" 

Ich bin mit dem request Modul in meiner ausdrücklichen App wie folgt aus:

var options = { 
    method: 'POST', 
    url: 'https://theEndpoint.com', 
    headers: { 
     'Authorization': 'Basic theEncodedUserName/Password', 
     'Content-Type': 'application/json', 
    }, 
    multipart: [{ 
     'content-type': 'application/json', 
     body: JSON.stringify({"GETRSDATA_Input":{"@xmlns":"http://theEndpoint.com","RESTHeader":{"@xmlns":"http://theEndpoint.com/header"},"InputParameters":{"P_CHANGESINCE_DATE":"0460070398"}}}) 
}], 

Ich habe eine Callback-Funktion die Antwort zu handhaben und ich laufe es mit:

request(options, callback);

Does das sieht richtig aus? Ich glaube nicht, dass ich die Anfrage richtig aufstelle.

Antwort

2

Sie sind ziemlich nah dran, aber nicht ganz richtig, es gibt ein paar Dinge über Ihre Anfrage Optionen, die geändert werden müssen.

Wenn Sie JSON in der Anforderung übergeben möchten, müssen Sie den Header Content-Type nicht festlegen. request liefert das Flag json, das ein boolean Wert ist, wenn true dann Content-Type auf application/json festgelegt wird und der Text ordnungsgemäß stringifiziert wird, wird die Antwort auch ordnungsgemäß zu JSON analysiert.

Darüber hinaus sollte Ihr Anfragetext im Attribut multipart nicht übergeben werden, da Sie keine mehrteilige Anfrage stellen. Sie sollten das Attribut body verwenden.

Ich sehe auch, dass Ihre Anfrage Körper bereits basierend auf dem, was Sie in der Frage angegeben hat. Sie müssen es nicht vorher stringifizieren, wie oben erwähnt request wird davon für Sie übernehmen.

Wenn Sie Basic Auth ausführen, können Sie die Eigenschaft auth für die Anforderung verwenden. Weitere Informationen über die auth Eigenschaft finden Sie in der request auth docs

var reqBody = JSON.parse("{\"GETRSDATA_Input\":{\"@xmlns\":\"http://theEndpoint.com\",\"RESTHeader\":{\"@xmlns\":\"http://theEndpoint.com/header\"},\"InputParameters\":{\"P_CHANGESINCE_DATE\":\"0460070398\"}}}"); 

var options = { 
    method: 'POST', 
    url: 'https://theEndpoint.com', 
    auth: { 
    user: YourUsername, 
    password: YourPassword, 
    sendImmediately: true 
    }, 
    body: reqBody, 
    json: true 
}; 

request(options, function(err, res, body) { 
    // If an error occurred return the error. 
    if (err) return err; 

    // No error occurred return the full reponse 
    return res; 
});