ExpressJS Ошибка ответа Google Api Обязательный параметр: q - PullRequest
0 голосов
/ 30 октября 2019

У меня есть ExpressJS, и я хочу получить данные из API Google Книг. Я создал следующий тестовый запрос, направленный на попадание https://www.googleapis.com/books/v1/volumes?q=isbn:0743273567:

const express = require('express');
var request = require('request');
const auth = require('../middlewares/authenticate');
const User = require('../models/User');
const Book = require('../models/Book');

let router = express.Router();

...

//test get books api example
router.get('/google', async (req, res, next) => {
  request({
    uri: 'https://www.googleapis.com/books/v1/volumes',
    qs: {
      api_key: process.env.GOOGLE_API_KEY,
      query: 'isbn:9781440346026'
    }
  }).pipe(res);
});

Вместо информации о книге, запрос возвращает:

{
  "error": {
    "errors": [
      {
        "domain": "global",
        "reason": "required",
        "message": "Required parameter: q",
        "locationType": "parameter",
        "location": "q"
      }
    ],
  "code": 400,
  "message": "Required parameter: q"
  }
}

1 Ответ

0 голосов
/ 01 ноября 2019

Вот пример, который возвращает ответ с использованием клиента запроса при посещении http://localhost:3000/google. Обратите внимание, что я передаю значение q вместо query в объекте qs.

const express = require('express');
const request = require('request');
const app = express();
const port = 3000;

app.get('/google', (req, res) => {
  request({
    uri: 'https://www.googleapis.com/books/v1/volumes',
    qs: {
      q: 'isbn:9781440346026'
    }
  }).pipe(res);
});

app.listen(port);
...