【问题标题】:ExpressJS Google Api response error Required parameter: qExpressJS Google Api 响应错误 必填参数:q
【发布时间】:2019-11-01 05:19:42
【问题描述】:

我有一个 ExpressJS,我想从 Google Books api 检索数据。我创建了以下旨在点击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"
  }
}

【问题讨论】:

  • 在您的请求中,您将属性设置为query。您应该将其更改为值 q,这将返回结果。
  • 成功了!谢谢。如果您制定为答案,我会接受。
  • 我已经发布了作为更好说明的答案

标签: express xmlhttprequest google-books


【解决方案1】:

这是一个在访问http://localhost:3000/google 时使用请求客户端返回响应的示例。请注意,我在 qs 对象中传递值 q 而不是 query

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);

【讨论】:

    猜你喜欢
    • 2013-04-08
    • 2018-05-03
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-03
    相关资源
    最近更新 更多