簡體   English   中英

使用Angular + Express發出POST請求時獲取空響應正文

[英]Getting back empty response body when making a POST request using Angular + Express

我正在嘗試發出一個簡單的POST請求,但從服務器返回的響應卻是空的。 我已經篩選了有關該主題的所有SO問題,並嘗試了發布的解決方案,但無濟於事。

我嘗試更改請求標頭選項以使用'application/x-www-form-urlencoded' ,並將我的快遞應用中的app.use(bodyParser.urlencoded({ extended: true }));設置為app.use(bodyParser.urlencoded({ extended: true })); 但這也不起作用。

auth-service.service.ts

login(loginInfo: object) {
    return this.http.post<loginInfo>(this.loginUrl, { "test": "test" })
    .pipe(
        catchError(this.handleError)
    );
 }

 private handleError(error: HttpErrorResponse) {
    if (error.error instanceof ErrorEvent) {
       console.log('An error occured:', error.error.message);
    } else {
       console.log(`Backend returned code ${error.status}, ` +
      `body was ${error.error}`);
    }

    return throwError('Something bad happened; please try again later.')
 }

login.component.ts(調用登錄服務方法)

onSubmit() { 
    const loginInfo = { username: this.username.value, password: this.password.value };
    this.authService.login(loginInfo).subscribe(
         resp => { console.log(resp); },
         err => { console.log(err); }
  )
}

server.js(我在這里定義了路由,但它們並不相關)

const express = require('express');
const bodyParser = require('body-parser');
const api = require('./routes/api');

const app = express();
const port = process.env.port || 3000;

app.use((req, res, next) => {
     res.setHeader('Access-Control-Allow-Origin', '*');
     next();
})
app.use(bodyParser.json());

app.use('/api', api)
app.get('/', function (req, res) {
     res.send(JSON.stringify('Hello from server'));
})

app.post('/login', (req, res) => {
     let userData = req.body
     res.send('Request body: ' + JSON.stringify(userData));
})


app.listen(port, function () {
     console.log('Server running on localhost: ' + port);
 });

我正在控制台記錄以下內容:

Backend returned code undefined, body was undefined

Something bad happened; please try again later.

但是,當我嘗試使用Postman時,會得到期望的響應(即Request body: {}

我不確定為什么通過Postman完成檢索到的響應而不是通過應用程序完成時獲得的響應。

任何幫助表示贊賞。 謝謝!

您需要在auth-service.service.tsPOST請求設置body

import { HttpParams } from '@angular/common/http';

login(loginInfo: object) {
  const body = new HttpParams()
    .set('test', 'test');
  return this.http.post<loginInfo>(this.loginUrl, body)
    .pipe(
      catchError(this.handleError)
    );
}

嘗試使用express.json丟失

app.use(express.json());

app.use(bodyParser.urlencoded({
    extended: true
}));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM