J'essaye de faire une requête HTTP POST à l'API google QPX Express [1] en utilisant nodejs et request [2].
Mon code ressemble à ceci:
// create http request client to consume the QPX API
var request = require("request")
// JSON to be passed to the QPX Express API
var requestData = {
"request": {
"slice": [
{
"origin": "ZRH",
"destination": "DUS",
"date": "2014-12-02"
}
],
"passengers": {
"adultCount": 1,
"infantInLapCount": 0,
"infantInSeatCount": 0,
"childCount": 0,
"seniorCount": 0
},
"solutions": 2,
"refundable": false
}
}
// QPX REST API URL (I censored my api key)
url = "https://www.googleapis.com/qpxExpress/v1/trips/search?key=myApiKey"
// fire request
request({
url: url,
json: true,
multipart: {
chunked: false,
data: [
{
'content-type': 'application/json',
body: requestData
}
]
}
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body)
}
else {
console.log("error: " + error)
console.log("response.statusCode: " + response.statusCode)
console.log("response.statusText: " + response.statusText)
}
})
Ce que j'essaie de faire est de passer le JSON en utilisant l'argument multipart [3]. Mais au lieu de la bonne réponse JSON, j'ai eu une erreur (400 indéfini).
Lorsque je fais une demande en utilisant le même JSON et la même clé API en utilisant CURL à la place, cela fonctionne bien. Il n'y a donc rien de mal avec ma clé API ou JSON.
Qu'est ce qui ne va pas avec mon code?
MODIFIER :
exemple de travail CURL:
i) J'ai enregistré le JSON que je passerais à ma requête dans un fichier appelé "request.json":
{
"request": {
"slice": [
{
"origin": "ZRH",
"destination": "DUS",
"date": "2014-12-02"
}
],
"passengers": {
"adultCount": 1,
"infantInLapCount": 0,
"infantInSeatCount": 0,
"childCount": 0,
"seniorCount": 0
},
"solutions": 20,
"refundable": false
}
}
ii) ensuite, dans le terminal, je suis passé au répertoire dans lequel le fichier request.json nouvellement créé était situé et exécuté (myApiKey représente évidemment ma clé API réelle):
curl -d @request.json --header "Content-Type: application/json" https://www.googleapis.com/qpxExpress/v1/trips/search?key=myApiKey
[1] https://developers.google.com/qpx-express/ [2] un client de requête http conçu pour nodejs: https://www.npmjs.org/package/request [3] voici un exemple que j'ai trouvé https://www.npmjs.org/package/request#multipart-related [4] L'API QPX Express renvoie une erreur d'analyse 400