Не удается перенаправить запросы XHR, пока работает URL в браузере - PullRequest
0 голосов
/ 30 июня 2018

Я пытаюсь разработать REST API в TypeScript с помощью NoteJS и Express.

Пока мне удалось настроить API на localhost, и если я перейду к http://localhost:8080, все будет работать.

В частности, я настроил маршрут http://localhost:8080/newwletter/subscribe, и если я перехожу с помощью браузера на эту страницу, новый (поддельный) подписчик правильно добавляется в базу данных (то есть вся логика работает).

Если я выполняю вызов XHR из клиентского веб-приложения, все запросы обрабатываются обработчиком рута '*'.

Это текущий код:

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));

1 Ответ

0 голосов
/ 30 июня 2018

Ваш маршрут определен для методов GET, в то время как ваш клиент отправляет запрос POST.

Выполните одно из следующих действий:

  • Определить newsletterRoutes.post('/subscribe', ...)
  • Звоните this.http.get(url, ...)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...