Угловая отправка запроса на узел api - PullRequest
0 голосов
/ 19 марта 2019

В моем угловом приложении я отправляю запрос post в API узла с объектом данных JSON, но он не работает должным образом.В полезной нагрузке запроса объект данных JSON не отображается.Когда я отправляю строку JSON с помощью JSON.stringify(auth), она отображается в полезной нагрузке запроса, но не может быть проанализирована json body-parser в бэкэнде узла.Просит тело пусто.Дайте мне решение этой проблемы.

Мой код

import { Injectable } from "@angular/core";
import { AuthData } from "../modules/AuthData";
import {
  HttpClient,
  HttpParams,
  HTTP_INTERCEPTORS,
  HttpInterceptor,
  HttpHeaders
} from "@angular/common/http";
@Injectable({
  providedIn: "root"
})
export class AuthService {
  private url = "http://localhost:3000";
  private httpOptions = {
    headers: new HttpHeaders({
      "Content-Type": "application/json",
      Authorization: "my-auth-token",
      "Request-Method": "post"
    })
  };
  constructor(private http: HttpClient) {}

  login(email: string, password: string) {
    const authData = { email: email, password: password };
    console.log(authData);
    this.http
      .post(this.url + "/api/user/login", authData)
      .subscribe(response => {
        console.log(response);
      });
  }
}

Мой код бэкэнда

    const express = require('express');
const path = require('path');
const bodyParser = require('body-parser');
const mongoose = require("mongoose");
const cors = require('cors');
const userRoute = require("./routes/user");

const app = express();

mongoose
  .connect('mongodb://localhost:27017/tryondb', {
    useNewUrlParser: true
  })
  .then(() => {
    console.log("connected to the database");
  })
  .catch(() => {
    console.log("connection failed");
  })

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended:false}));
//var jsonParser = bodyParser.json();
//var urlencodedParser = bodyParser.urlencoded({ extended: false });

//app.use(cors);
app.use((req, res, next) => {
  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader(
    "Access-Control-Allow-Header",
    "Origin, X-Requested-with, Content-Type, Accept"
  );
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET, POST, PATCH, DELETE, OPTIONS"
  );
  console.log("rrr");
  next();
})





app.post("/api/user/login",(req,res,next)=>{
  console.log(req);
});

app.use("/api/user", userRoute);
console.log("aaa");
module.exports = app;

1 Ответ

0 голосов
/ 20 марта 2019

вы создаете httpoptions, но не передаете их правильно: попробуйте

 login(email: string, password: string) {
    const authData = { email: email, password: password };
    console.log(authData);
    this.http
      .post(this.url + "/api/user/login", authData, httpOptions)
      .subscribe(response => {
        console.log(response);
      });
  }
...