Saya mencoba membuat permintaan HTTP POST ke Google QPX Express API [1] menggunakan nodejs dan request [2].
Kode saya terlihat sebagai berikut:
// 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)
}
})
Apa yang saya coba lakukan adalah meneruskan JSON menggunakan argumen multi bagian [3]. Tetapi alih-alih respons JSON yang tepat, saya mendapat kesalahan (400 tidak ditentukan).
Saat saya membuat permintaan menggunakan JSON dan API Key yang sama menggunakan CURL, ini berfungsi dengan baik. Jadi tidak ada yang salah dengan kunci API atau JSON saya.
Apa yang salah dengan kode saya?
EDIT :
contoh CURL bekerja:
i) Saya menyimpan JSON yang akan saya berikan ke permintaan saya ke dalam file bernama "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) kemudian, di terminal saya beralih ke direktori tempat file request.json yang baru dibuat berada dan dijalankan (myApiKey jelas merupakan singkatan dari API Key saya yang sebenarnya):
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] klien permintaan http yang dirancang untuk nodejs: https://www.npmjs.org/package/request [3] berikut adalah contoh yang saya temukan https://www.npmjs.org/package/request#multipart-related [4] QPX Express API menampilkan kesalahan 400 parse