UNPKG

node-web-mvc

Version:
37 lines (36 loc) 1.51 kB
"use strict"; 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;