node-web-mvc
Version:
node spring mvc
37 lines (36 loc) • 1.51 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const EntityTooLargeError_1 = __importDefault(require("../../../errors/EntityTooLargeError"));
const MultipartBodyReader_1 = __importDefault(require("./MultipartBodyReader"));
const UrlencodedBodyReader_1 = __importDefault(require("./UrlencodedBodyReader"));
class RequestBodyReader {
constructor(config) {
this.config = config;
this.readers = [
new MultipartBodyReader_1.default(config),
new UrlencodedBodyReader_1.default(),
];
}
read(servletContext) {
const request = servletContext.request;
const mediaType = servletContext.request.mediaType;
const reader = this.readers.find((m) => m.supports(mediaType));
const length = request.nativeRequest.readableLength;
if (!reader) {
return null;
}
if (!isNaN(length) && length > Number(this.config.maxRequestSize)) {
// 如果请求超出限制
return Promise.reject(new EntityTooLargeError_1.default('request.body', length, this.config.maxRequestSize));
}
if (!request.body) {
// 如果body还没有开始读
request.body = reader.read(servletContext.request, mediaType);
}
return request.body;
}
}
exports.default = RequestBodyReader;