首页 > 解决方案 > Express.js 服务器:使用中间件的 PUT 请求

问题描述

我有一个可用的 Node/Express 服务器,我正在使用它通过 localhost 向外部 API 发出请求。正如您在我的示例代码中看到的那样,我正在使用node-fetch我的基本 GET 请求。

对于每个请求,我都会const url = BASE_URL提前准备一个实际外部服务器请求所需的。

但我被困在我PUT-Request的,因为我无法使用node-fetch. 那么我该怎么做才能用 PUT-Request 的实际 URL 通知我的 Express 服务器?

PUT-Request 在这里不起作用。

/* Route: Get Appointment it's availability times */
app.get('/availability/times/:id/:date/:locationId', (req, res) => {
  var id = req.params.id;
  var date = req.params.date;
  var locationId = req.params.locationId;
  const url = BASE_URL + '/availability/times?appointmentTypeID=' + id + '&date=' + date + '&calendarID=' + locationId;;
  fetch(url, {
      mode: "no-cors",
      method: "GET",
      headers: {
        'Content-Type': 'application/json',
        'X-Requested-With': 'content-type'
      },
    })
    .then(response => response.json())
    .then(json => {
      res.json(json);
    });
});

app.put('/appointments/:id/cancel', (req, res) => {
  var id = req.params.id;
  const url = BASE_URL + '/appointments/' + id + '/cancel';
  res.send(req.body)
});

标签: javascriptnode.jsexpressserverput

解决方案


如果您说fetch在您的 put 请求中未定义,请确保您在任何 routes 之前都需要它var fetch = require('node-fetch')。对于您的基本网址,您应该将其存储在配置文件中。创建一个名为的文件config.js,如下所示:

module.exports = {
  'BASE_URL': 'yoururlhere'
}

然后在您的快递服务器中要求它,var config = require('pathToConfig');您可以通过指定来使用它config.BASE_URL

如果这没有帮助,请更具体地说明您的实际问题是什么


推荐阅读