Угловой запрос POST - ошибка чтения ответа - PullRequest
0 голосов
/ 25 сентября 2018

У меня довольно простая ситуация.Я выполняю вызов конечной точки в моих облачных функциях Google, она отправляет простой ответ.Я пытаюсь console.log.

Угловой компонент

async submitHandler(formDirective: FormGroupDirective) {
    this.loading = true;

    const formValue = JSON.stringify(this.reqForm.value);

    this.http.post('https://myApp.cloudfunctions.net/myEndpoint', formValue)
        .subscribe(res => {
            console.log(res);
            this.success = true;
            formDirective.resetForm();
        }, 
        (err) => { console.log(err) });

    this.loading = false;
}

Функция Google Cloud

const functions = require('firebase-functions');
const cors = require('cors')({ origin: true });

const admin = require('firebase-admin');
admin.initializeApp();

exports.myEndpoint = functions.https.onRequest((req, res) => {

    return cors(req, res, () => {


        const body = JSON.parse(req.body);
        const name = body.name;
        console.log("REQUEST BODY >>> ", body);
        console.log("REQUEST NAME >>> ", name);


        if (!name) {
            res.status(400).send('missing name!')
        }


        res.send(name.split('').reverse().join(''))

    });

});

Функция облака отвечает nameполе поменяно.Итак, "name": "Kenny" ответит "ynneK".Это то, что я должен видеть в моем интерфейсе, когда я console.log(res).

Вот мой интерфейс ошибка :

HttpErrorResponse {headers: HttpHeaders, status: 200, statusText: "OK", url: "https://myApp.cloudfunctions.net/myEndpoint", ok: false, …}
error: {error: SyntaxError: Unexpected token l in JSON at position 0 at JSON.parse (<anonymous>) at XMLHttp…, text: "llaH ynneK"}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, lazyInit: ƒ}
message: "Http failure during parsing for https://myApp.cloudfunctions.net/myEndpoint"
name: "HttpErrorResponse"
ok: false
status: 200
statusText: "OK"
url: "https://myApp.cloudfunctions.net/myEndpoint"
__proto__: HttpResponseBase

Как вы можете видеть во второй строке "ошибка: {.." Iесть text: "llaH ynneK"}.Итак, я не думаю, что это проблема с сервером, я думаю, что это локальная проблема Angular.

Что я делаю не так?Должен ли я установить заголовки ответа для application / json в конечной точке облачной функции?Я не уверен, что я делаю не так здесь.

Поток:

  1. JSON.stringify формирует данные и отправляет их по почте (кажется, это единственный способ, которым это будет работать)

  2. Конечная точка GCF получает его и JSON.parse(req.body)

  3. Конечная точка делает свое дело, а затем отправляет обратно клиенту res.send()

  4. Клиент получает ответ, чтобы убедиться, что все в порядке, но ошибка возникает при попытке прочитать его.

Спасибо за любую помощь.

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