【问题标题】:I need help making an API request to an external API in nodejs express server (Angular Universal)我需要帮助向 nodejs express 服务器(Angular Universal)中的外部 API 发出 API 请求
【发布时间】:2020-12-30 23:37:46
【问题描述】:

我有一个 Angular Universal 应用程序。我正在尝试访问外部 API,但直接通过 HttpClient 执行此操作会生成 Cors 错误。在开发中,我成功地使用了代理进行调用。我正在尝试通过在我的快速服务器上创建一个路由来在生产中实现代理,该路由将交换适当的外部 API 路由。我无法在网上看到任何可以帮助解决这种特殊情况的内容。我似乎已经确定了路线。我收到 200 ok 错误,但没有发送数据。有人可以帮忙吗?

server.ts

app.route('/api/book').get((req, res) => {

  https.get('https://api2.isbndb.com/book/' + req, (resp) => {
    let data = '';

    // A chunk of data has been recieved.
    resp.on('data', (chunk) => {
      data += chunk;
    });

    // The whole response has been received. Print out the result.
    resp.on('end', () => {
      res.send(res.json(data)
      );
    });

  }).on("error", (err) => {
    console.log("Error: " + err.message);
  });


});

【问题讨论】:

  • 为什么需要代理进行生产? cors 错误大多仅在使用 localhost 或缺少这些标头时出现。也可以用this包添加cors来表达。
  • 这是个好问题。我真的不确定为什么我需要代理。直到几天前,我才使用代理工作正常。我知道我有正确的标头和 API 密钥。但突然间我每次都会遇到 cors 错误。我正在使用那个包
  • 很难判断出了什么问题。你改变环境了吗?你用的是 nginx 还是 apache?
  • 我正在使用快递。没有其他服务器。不熟悉 nginx 或 apache。
  • 在生产中不使用代理会出现什么错误?我看到您正在使用 aws,也许 this 有帮助?

标签: node.js angular api express universal


【解决方案1】:

您可以像这样从服务器端简单地启用 cors。

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

为了更好地理解或配置 cors() url。 可以看到here

默认情况下,它会调用 options 方法来检查用户访问该端点的权限。

或者您可以在客户端 api 调用中使用以下示例,

let data = { name: 'Peter Parker', age: 34 };
 const results = await fetch(
  'http://localhost:3000/api/v1/results',
  {
    method: "post", 
    mode: "cors",
    headers: {
      "Content-Type": "application/json",
      "Access-Control-Allow-Origin": "*"
    },
    body: JSON.stringify(data)
  }
)
  .then(res => res.json()) 
  .then(res => {
    return res;
  })
  .catch(error => {
    error.response = {
      status: 0,
      statusText:
        "Cannot connect. Please make sure you are connected to internet."
    };
    throw error;
  });

【讨论】:

    猜你喜欢
    • 2015-12-16
    • 1970-01-01
    • 2022-10-06
    • 2019-11-19
    • 1970-01-01
    • 2016-12-15
    • 1970-01-01
    • 2018-08-20
    • 1970-01-01
    相关资源
    最近更新 更多