nodejs 와 요청 [2]를 사용하여 Google QPX Express API [1]에 HTTP POST 요청을하려고합니다 .
내 코드는 다음과 같습니다.
// 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)
}
})
내가하려는 것은 multipart 인수 [3]을 사용하여 JSON을 전달하는 것입니다. 그러나 적절한 JSON 응답 대신 오류가 발생했습니다 (400 정의되지 않음).
대신 CURL을 사용하여 동일한 JSON 및 API 키를 사용하여 요청하면 제대로 작동합니다. 따라서 내 API 키 또는 JSON에는 아무런 문제가 없습니다.
내 코드에 어떤 문제가 있습니까?
수정 :
작동하는 CURL 예 :
i) 요청에 전달할 JSON을 "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) 그런 다음 터미널에서 새로 생성 된 request.json 파일이있는 디렉토리로 전환하여 실행했습니다 (myApiKey는 분명히 내 실제 API 키를 나타냄).
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] nodejs 용으로 설계된 http 요청 클라이언트 : https://www.npmjs.org/package/request [3] 여기에 제가 찾은 예가 있습니다. https://www.npmjs.org/package/request#multipart-related [4] QPX Express API가 400 구문 분석 오류를 반환합니다.