Angular 7 / Express - Нулевое тело ответа на запрос POST - PullRequest
3 голосов
/ 05 июня 2019

Я пытаюсь получить / прочитать ответ от запроса POST, сделанного в Angular 7, если я устанавливаю API для возврата «text», все в порядке, но когда я делаю ответ JSON, тело ответа на Angular нуль.

Если я попробую API на Почтальоне, я получу полный ответ JSON body.

Я попытался изменить метод ответа в Express API (с простого res.json () на «старый» способ объявления Content-Type и отправки его с помощью res.end ()), ничего не изменилось.

Код ответа, который я использую в бэкэнде:

res.status(200).json({
    success: true,
    token: token
})

Что я тоже пробовал:

res.writeHead(200, { 'Content-Type': 'application/json' })
var json = JSON.stringify({
    success: true,
    token: token
})
res.end(json)

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

login(username: string, password: string): Observable<any> {
    let body = {username: username, password: password};
    let headers = new HttpHeaders(); 
    headers.set('Content-Type', 'application/json');

    return this.http.post(this.baseUrl + "/login/sign-in", body, {headers: headers, responseType: 'json', observe: 'response'});
  }

Звонок на эту услугу:

this.api.login("admin", "password").subscribe(result => {
    console.log(result);
})

На Почтальоне я получаю такой результат: postman result

На Angular я получаю это (JSON): angular result - json

На Angular я получаю это (ТЕКСТ): angular result - text

Edit:

Если я добавлю что-нибудь перед JSON в приложении Express, тело больше не будет иметь значение null:

res.writeHead(200, { 'Content-Type': 'application/json' })
    var json = JSON.stringify({
    success: true,
    token: token
})
res.end('some_char' + json)

Результат (конечно, ответ идет по ошибке): result

Редактировать 2:

Я тоже пытаюсь (без удачи) с этой простой версией конечной точки:

const express = require('express')

const app = express()

app.post('/login/sign-in', (req, res) => res.json({ value: 1 }))

app.listen(3000, () => {
    console.log('App running on port 3000.')
})

Решение:

Это была проблема CORS, я добавил это в бэкэнд, и все работает нормально:

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