【发布时间】:2018-09-24 21:38:20
【问题描述】:
我正在尝试做一个简单的http.post 调用,然后console.log 数据。我想使用最新的编码技术,所以我尝试用 rxjs 来做这件事,因为它看起来功能强大、高效,并且有望面向未来。
我以前使用过.subscribe,但在所有angular 文档中都没有订阅,所以这让我相信它是一种较旧的方法并且它不是最好的。
我尝试了很多代码,下面是一些sn-ps:
import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import { catchError, retry, tap, map } from 'rxjs/operators';
import { of } from 'rxjs';
readonly GCF_newReq_URL = 'https://us-eastern.my-app.cloudfunctions.net/newRequest';
async submitHandler(formDirective: FormGroupDirective) {
this.loading = true;
const formValue = this.reqForm.value;
this.http.post(this.GCF_newReq_URL, formValue)
.pipe(
tap(res => console.log(res)),
retry(3),
catchError(err => {
console.log(err)
return of(err);
}),
map(res => console.log(res))
)
.subscribe(res => {
console.log(res);
});
}
我试过map、tap、事件.subscribe,但我什么也说不出来,它只是说:message: "Http failure during parsing for https://us-eastern.my-app.cloudfunctions.net/newRequest"
这应该很简单,我一定是把它复杂化了,但是我找不到任何像样的文档。
编辑,添加云功能代码
import * as functions from 'firebase-functions';
const cors = require('cors')({ origin: true });
import * as admin from 'firebase-admin';
admin.initializeApp();
export const newRequest = functions.https.onRequest((request, response) => {
return cors(request, response, () => {
const data = request;
if (!data) {
response.status(400).send('ERROR you must supply data');
}
response.status(200).send("Hello from Firebase!");
});
});
【问题讨论】:
-
请求格式似乎不正确,请检查您发送和接收的数据。其次,返回控制台的
map运算符似乎不正确。我会摆脱它。
标签: angular rxjs httprequest angular6