Tôi đang cố tạo yêu cầu HTTP POST tới API QPX Express của google [1] bằng cách sử dụng nodejs và yêu cầu [2].
Mã của tôi trông như sau:
// 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)
}
})
Những gì tôi đang cố gắng làm là chuyển JSON bằng cách sử dụng đối số nhiều phần [3]. Nhưng thay vì phản hồi JSON thích hợp, tôi đã gặp lỗi (400 không xác định).
Thay vào đó, khi tôi thực hiện một yêu cầu bằng cách sử dụng cùng một JSON và Khóa API bằng CURL, nó hoạt động tốt. Vì vậy, không có gì sai với khóa API hoặc JSON của tôi.
Có gì sai với mã của tôi?
CHỈNH SỬA :
làm việc ví dụ CURL:
i) Tôi đã lưu JSON mà tôi sẽ chuyển cho yêu cầu của mình vào một tệp có tên "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) sau đó, trong terminal, tôi đã chuyển sang thư mục chứa và chạy tệp request.json mới được tạo (myApiKey rõ ràng là viết tắt của API Key thực tế của tôi):
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] một ứng dụng khách yêu cầu http được thiết kế cho nodejs: https://www.npmjs.org/package/request [3] đây là một ví dụ tôi tìm thấy https://www.npmjs.org/package/request#multipart-osystem [4] QPX Express API đang trả về lỗi phân tích cú pháp 400