代码之家  ›  专栏  ›  技术社区  ›  don

浏览器中的URL工作时,无法路由XHR请求

  •  0
  • don  · 技术社区  · 6 年前

    我正在尝试开发一个 REST 带有notejs和express的typescript中的API。

    到目前为止,我已经在本地主机上获得了API工作,如果我导航到 http://localhost:8080 一切正常。

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

    如果我做一个 XHR 但是,从客户端Web应用程序调用,所有请求都由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();
    });
    

    在客户端,我在一个角度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));
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   fzbd    6 年前

    当您的客户机发出一个POST请求时,您的路由是为GET方法定义的。

    • newsletterRoutes.post('/subscribe', ...)
    • this.http.get(url, ...)