Angular + Express, GET-запрос не работает - PullRequest
0 голосов
/ 08 июля 2019

В основном мое приложение Angular должно выполнять HTTP-запрос на получение, а сервер Express (на котором также размещается приложение angular) должен отправлять объект JSON в приложение Angular.Почему-то это не работает, и я понятия не имею, почему.Даже первый console.log в моем методе get Server.js не будет вызван.

Server.js:

var express = require('express');
var app = express();
var path = require('path');
var bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, '../dist/appTest')));

app.use(bodyParser.json({
  limit: '5mb'
}));
app.use(bodyParser.urlencoded({
  extended: true
}));
app.use(function (req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', '*');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
  res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,Content-Type,Accept');
  res.setHeader('Access-Control-Allow-Credentials', true);
  next();
});
app.get('*', (req, res, next) => {
    res.sendFile(path.join(__dirname, '../dist/appTest/index.html'))

});
app.get("/api/getData", function(req,res) {
  console.log("get123");
  var testObj = {
    "name": "TestName",
    "email": "Test@Email.com",
    "subject": "TestSubject",
    "content": "Some text...",
    "answer": [{
      "date": newDate(Date.now()).toLocaleString(),
      "sender":"Mr.Test",
      "answer":"some text.."
    }]
  }
  console.log("get456");
  res.json(testObj)
});
app.listen(3000, () => console.log('Server running on port 3000!'));

Служба Angular, которую я использую:

import { Injectable } from '@angular/core';
import { Http, Response, Headers, RequestOptions } from '@angular/http';


@Injectable({
  providedIn: 'root'
})
export class DbConnectorService {
  private baseUrl:string = "http://localhost:3000"
  constructor(private http: Http) { }
  getAllData() {
    this.http.get(this.baseUrl + '/api/getData').subscribe((res) => {
      console.log(res);
    });
  }
  }

Файл console.log в службе печатает следующее:

Response {_body: "<!doctype html>↵<html lang="en">↵<head>↵  <meta ch…="main-es5.js" nomodule></script></body>↵</html>↵", status: 200, ok: true, statusText: "OK", headers: Headers

enter image description here

Моя цель - передать объект "testObj" с сервера в Angular App с помощью запроса get (достаточно распечатать его на консоли браузера)теперь).И мне также интересно, почему консольные журналы в app.get("/api/getData", function(req,res) не будут напечатаны.Означает ли это, что маршрут никогда не вызывается?Но почему?

1 Ответ

1 голос
/ 08 июля 2019

При определении app.get('*', function()= {}) он принимает каждый HTTP-запрос и обрабатывает его обратным вызовом. Я вижу ваш ответ от API, содержащего данные HTML из файла, поэтому в этом случае ваш API обрабатывает этот код блока, а не /api/getData.

app.get('*', (req, res, next) => {
    res.sendFile(path.join(__dirname, '../dist/appTest/index.html'))

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...