2015-08-31 2 views
2

Voir mon code ci-dessous. J'essaie d'envoyer {"status": "accepted"} dans le corps de ma requête. L'erreur que je continue à revenir de l'API sur leur extrémité est:Comment utiliser JSON dans le corps d'un http PUT dans node.js?

{"message":"Unable to parse JSON in request body.","code":"invalid_json"}

je peux faire ce travail à Swift mais que je suis en utilisant un objet dictionnaire avec les paramètres et sérialisation il. Je ne sais pas comment faire ça dans Node.JS.

var https = require('https') 

var options = { 
    "host": "sandbox-api.uber.com", 
    "path": "/v1/sandbox/requests/" + req.body.request_id, 
    "method": "PUT", 
    "headers": { 
    "Authorization" : "Bearer " + req.body.bearer_token, 
    "Content-Type" : "application/json", 
    }, 
    "body" : { 
     "status" : "accepted" 
    } 
} 

callback = function(response) { 
    var str = '' 
    response.on('data', function(chunk){ 
     str += chunk 
    }) 

    response.on('end', function(){ 
     console.log(str) 
    }) 
} 

https.request(options, callback).end() 
+0

Les bibliothèques http BUILTIN sont assez barebones. Il est beaucoup plus facile d'utiliser quelque chose de plus haut niveau comme [request] (https://github.com/request/request), qui gère beaucoup de détails pour vous. – josh3736

Répondre

10

Vous écrivez à l'objet de la demande comme:

var https = require('https') 

var options = { 
    "host": "sandbox-api.uber.com", 
    "path": "/v1/sandbox/requests/" + req.body.request_id, 
    "method": "PUT", 
    "headers": { 
    "Authorization" : "Bearer " + req.body.bearer_token, 
    "Content-Type" : "application/json", 
    } 
} 

callback = function(response) { 
    var str = '' 
    response.on('data', function(chunk){ 
    str += chunk 
    }) 

    response.on('end', function(){ 
    console.log(str) 
    }) 
} 

var body = JSON.stringify({ 
    status: 'accepted' 
}); 
https.request(options, callback).end(body); 
+0

Merci l'homme! Je n'ai pas trouvé cette réponse nulle part. C'est comme si personne ne l'avait fait auparavant ou en a parlé en ligne au moins. –