Angular HttpClient是否对请求正文大小有限制?
我正在做一个使用剩余API的角度项目。该API很简单,只要使用POST方法使用新的JSON对象作为请求主体,只要替换该文件的API端点,就可以替换该JSON文件。
如果新的JSON对象很小并且仅包含一些节点,则代码运行良好,但是当我尝试发送大对象时,该代码返回状态代码为400的错误和错误消息“解析请求时出错”。错误是由大物体引起还是我做错了?
最后一次返回错误是当我尝试发送约1.5MB的大JSON文件时,该JSON对象似乎是有效的,因为一些在线json格式化程序将其报告为有效的json对象。
很抱歉,如果我不能很好地解释我的问题,因为我不是英语本地用户,并且我在angular世界中也很新。谢谢
import { HttpClient, HttpHeaders, HttpErrorResponse } from "@angular/common/http";
import { take, catchError } from "rxjs/operators";
import { throwError, Observable } from "rxjs";
import { Injectable } from "@angular/core";
const headers = new HttpHeaders({
'Content-Type': 'application/json',
'Accept': 'application/json',
'Cache-Control': 'no-cache',
'Access-Control-Allow-Origin': '*'
});
@Injectable()
export class configService {
private _url = 'http://some-api-endpoint/';
constructor(private http:HttpClient) { }
private _save(data):Promise<any> {
return this.http.post(this._url, data, { headers, responseType: 'text', observe:'response' })
.pipe(
take(1),
catchError(err => this._handleError(err))
)
.toPromise();
}
public async updateConfigFile(data): Promise<any> {
try {
const json = JSON.stringify(data, null, 2);
const update = await this._save(json);
if(update.status === 201) {
return {
success: true,
data: update
}
} else {
return {
success: false,
error: update
}
}
} catch(err) {
return {
success: false,
error: err.message
}
}
}
private _handleError(error: HttpErrorResponse): Observable<never>{
let errObj = {};
if(error.error instanceof ErrorEvent) {
const err = error.error
console.warn('An client-side error occured:', {err});
errObj = {
status: 'internal error',
message: error.error.message
}
} else {
console.warn(`Backend returned code ${error.status} `, {error});
errObj = {
status: error.status,
message: error.error
}
}
return throwError(errObj);
}
}