来自 HttpClient Post 请求的错误管道类型
Wrong piped type got from HttpClient Post request
我的服务正在触发这样的 post 请求
createDocument(owner: string): Observable<HttpResponse<Document>> {
return this.http.post<HttpResponse<Document>>(`${this.API}`, {owner}).pipe(
tap(document => {
this.dataStore.unshift(document.body!.authenticationMethod, document.body!.assertionMethod)
this.list$.next(this.dataStore)
})
)
}
但是 tap
函数中的响应没有 HttpResponse
类型,而是 Document
.
我原以为 document
是一个 HttpResponse<Document>
对象。我的 API 以类似 Document
json 的字符串进行响应,该字符串被正确解析为 Document
对象。
Angular HttpClient 方法支持名为 observe
.
的选项
默认为 body
。在您的情况下,您应该指定类型 'response'
:
return this.http.post<Document>(`${this.API}`, {owner}, { observe: 'response' })
注意:我还将类型更改为 Document
,这样 TypeScript 会自动将 document
参数识别为 HttpResponse<Document>
我的服务正在触发这样的 post 请求
createDocument(owner: string): Observable<HttpResponse<Document>> {
return this.http.post<HttpResponse<Document>>(`${this.API}`, {owner}).pipe(
tap(document => {
this.dataStore.unshift(document.body!.authenticationMethod, document.body!.assertionMethod)
this.list$.next(this.dataStore)
})
)
}
但是 tap
函数中的响应没有 HttpResponse
类型,而是 Document
.
我原以为 document
是一个 HttpResponse<Document>
对象。我的 API 以类似 Document
json 的字符串进行响应,该字符串被正确解析为 Document
对象。
Angular HttpClient 方法支持名为 observe
.
默认为 body
。在您的情况下,您应该指定类型 'response'
:
return this.http.post<Document>(`${this.API}`, {owner}, { observe: 'response' })
注意:我还将类型更改为 Document
,这样 TypeScript 会自动将 document
参数识别为 HttpResponse<Document>