Node.js Can';当浏览器中的URL工作时,t路由XHR请求

Node.js Can';当浏览器中的URL工作时,t路由XHR请求,node.js,angular,express,xmlhttprequest,Node.js,Angular,Express,Xmlhttprequest,我正试图用NoteJS和Express在TypeScript中开发一个RESTAPI 到目前为止,我已经成功地在localhost上运行了API,如果我导航到所有东西都可以运行的话 特别是,我已经设置了路线http://localhost:8080/newwletter/subscribe,如果我使用浏览器导航到该页面,一个新的(假的)订阅者将正确添加到数据库中(这意味着整个逻辑工作正常) 但是,如果我从客户端web应用程序调用XHR,所有请求都由rute处理程序“*”处理 这是当前代码: im

我正试图用NoteJS和Express在TypeScript中开发一个
REST
API

到目前为止,我已经成功地在localhost上运行了API,如果我导航到所有东西都可以运行的话

特别是,我已经设置了路线
http://localhost:8080/newwletter/subscribe
,如果我使用浏览器导航到该页面,一个新的(假的)订阅者将正确添加到数据库中(这意味着整个逻辑工作正常)

但是,如果我从客户端web应用程序调用
XHR
,所有请求都由rute处理程序
“*”
处理

这是当前代码:

import express = require('express');

const app = express();

const newsletterRoutes = express.Router();

newsletterRoutes.get('/subscribe', async (req, res) => {
  console.log('req', req);
  res.send(await new Subscribers().add());
});

app.use(function (req, res, next) {

  res.setHeader('Content-Type', 'application/json');
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');

  next();
});

app.use('/newsletter', newsletterRoutes);

app.use('*', (req, res) => {
  console.log(req.params);
  res.status(200).send('No valid url').end();
});
在客户端,我在Angular 6应用程序中发出请求,如下所示:

this.http.post(url, payload, {
  headers: new HttpHeaders().set('Content-Type', 'application/json')
})
.toPromise()
.then(response => console.log(response))
.catch(err => console.error('XHR Failed to connect to API', err));

当客户端发出POST请求时,为GET方法定义了路由

执行以下操作之一:

  • 定义通讯路线。发布('/subscribe',…)
  • 调用
    this.http.get(url,…)