2016-11-02 3 views
0

Я пытаюсь вернуть список рейсов из QPX Экспресс API Google, howver я проковылял на плохой ответа на запрос:Debugging Bad Request 400 Ошибка

{ StatusCodeError: 400 - {"error":{"errors":[{"domain":"global","reason":"badRequest","message":"Invalid inputs: received empty request."}],"code":400,"message":"Invalid inputs: received empty request."}} 

там что-то не так с тем, как я m приближается к структуре запроса? Я использую библиотеку request-promise

const options = { 
    method: 'POST', 
    uri: 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=XXXXXXXXXXXXXXX', 

    qs: { 
    "request": { 
    "passengers": { 
     "adultCount": 1 }, 
     "slice": [{"origin": "BOS", 
        "destination": "LAX", 
        "date": "2017-03-01" 
       }] 
       } 
     }, 
    json: true 
} 

request(options) 
    .then(function (response) { 
    console.log(response) 
    }) 
    .catch(function (err) { 
    console.log(err) 
    }) 

ответ

0

Я решил проблему. Запрос должен был включать данные в ключ body с типом контента, установленным в JSON.

Это теперь возвращает данные API, как ожидалось.

const options = { 
    method: 'POST', 
    uri: 'https://www.googleapis.com/qpxExpress/v1/trips/search?&key=XXXXXXXXXXXXXXXXXXXX', 
    body: { 
    "request": { 
    "passengers": { 
     "adultCount": "1" 
    }, 
    "slice": [ 
     { 
     "origin": "SFO", 
     "destination": "LAX", 
     "date": "2017-06-19" 
     } 
    ], 
    "solutions": "1" 
    } 
}, 
    json: true 
} 

request(options) 
    .then(function (response) { 
    console.log(response.trips.tripOption[0].saleTotal) 
    }) 
    .catch(function (err) { 
    console.log(err) 
    }) 
0

Проверьте это:

const options = { 
    method: 'POST', 
    uri: 'https://www.googleapis.com/qpxExpress/v1/trips/search?key=XXXXXXXXXXXXXXX', 

    qs: { 
    "request": { 
    "passengers": { 
     "adultCount": 1 }, 
     "slice": [{"origin": "BOS", 
        "destination": "LAX", 
        "date": "2017-03-01" 
       }] 
       } 
     }, 
    json: true 
}; 

request(options) 
    .then(function (response) { 
    console.log(response); 
    }) 
    .catch(function (err) { 
    console.log(err); 
    }); 

Вы забыли закончить Uri строку. Также, пожалуйста, не забудьте о запятой.

Edit: Try:

request({ 
    url: (your url here), 
    method: "POST", 
    json: requestData 
}, 

где requestData будет вашим QS.

+0

Извинения @MindRoller, я случайно удалил заключительную цитату, когда я удалил ключ api, чтобы опубликовать это. К сожалению, он по-прежнему сломан. Любые другие идеи? –

+0

Обычно, когда вы получаете код статуса 400 из API, это означает, что ваш запрос не сформирован. Сначала попробуйте отправить этот простой запрос: https://developers.google.com/qpx-express/v1/json.samples/SFOLAX.in.json и посмотреть, получишь ли вы правильный ответ. Это пример из Руководства API Google. Кстати: не можете ли вы сначала отправить простой запрос AJAX? Вместо использования API обещаний? – MindRoller

+0

Да, я искал форматирование запроса и поменял его на примере Google, но пока не работает. Я тоже отлаживал Postman, и все параметры отправляются правильно. Я не понимаю, почему это не работает. Является ли ключ API правильным местом? Причина, по которой я использую запрос api, - это то, что я хочу сделать это на стороне сервера. –