angular - 从 Http 请求转换响应的问题
问题描述
我有这个 HTTP 请求:
storeCategory(file: File, category: CategoryModel): Observable<HttpEvent<{}>> {
const formdata: FormData = new FormData();
console.log("1")
formdata.append('file', file);
formdata.append('category', new Blob([JSON.stringify({ "category_name": category.category_name, "category_description": category.category_description })], { type: "application/json" }))
const url = `api/cateogry/saveCategory`;
const req = new HttpRequest('POST', url, formdata, {
reportProgress: true,
responseType: 'text'
});
return this.http.request<CategoryModel>(req);
}
从这个方法我发送数据和图像,我的后端方法返回一个 JSON 对象,但我想将该对象绑定为CategoryModel
,但现在它绑定到HttpEvent
.
解决方案
从您发布的图像来看,请求似乎不是 a CategoryModel
,而是-objectCategoryModel
内的 s列表。HttpResponse
既然你在使用http.request
,你会得到很多回复,而且每一个在这里都有不同的HttpEventType
发现。您需要过滤每种类型的响应,并根据类型(例如event.type === HttpEventType.Response
)获取您想要的内容。
尝试这个:
storeCategory(file: File, category: CategoryModel): Observable<CategoryModel[]> {
const formdata: FormData = new FormData();
console.log("1")
formdata.append('file', file);
formdata.append('category', new Blob([JSON.stringify({ "category_name": category.category_name, "category_description": category.category_description })], { type: "application/json" }))
const url = `api/cateogry/saveCategory`;
const req = new HttpRequest('POST', url, formdata, {
reportProgress: true,
responseType: 'text'
});
return this.http.request<any>(req).pipe(map(event => {
console.log("event",event);
if(event.type == HttpEventType.Response){ // try different event types based on desired result.
event.body = event.body.replace(/\\/g,"/"); // replace all double backslashes with slash.
return <CategoryModel[]>JSON.parse(event.body); // try to parse the data if it is a string
}
}));
}
我将方法的返回类型更改为Observable<CategoryModel[]>
,并更改了 return 语句以转换结果以反映这一点。
记住import {map} from 'rxjs/operators'
在你的组件中记住import {HttpEventType} from '@angular/common/http'
在你的组件中
不同HttpEventType
的 s 可以在这里找到
推荐阅读
- python - 还有一个“django.db.utils.ProgrammingError:关系“device_gclouddevice”不存在”
- xml - Jackson自定义xml反序列化
- amazon-web-services - AWS 工作区的 IAM 角色
- java - Java BufferedReader 特殊字符有时无法识别
- git - GitHub 将 Clone 转换为 Fork(事后)
- javascript - 对 JavaScript 的 var 作用域感到困惑
- powerquery - Power Query M 中的外部应用
- java - Java - 泛型数组的 ArrayList
- apache-kafka - 为什么 Kafka Streams 似乎需要 ClusterAction 的权限?
- typescript - Mathjax 更新了 Latex 方程的渲染