繁体   English   中英

我需要帮助向 nodejs express 服务器(Angular Universal)中的外部 API 发出 API 请求

[英]I need help making an API request to an external API in nodejs express server (Angular Universal)

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

服务器.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。

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

app.use(cors())

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

默认情况下,它将调用 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;
  });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM