我在我的android应用中对此进行了改装。
@Multipart
@POST("myEndpoint")
Call<...> myMethod(@Header("Authorization") String auth, @Part("part") MyHugeObj hugeObj);
我想要的是将一个非常大的对象发送到我的NodeJS后端,该对象将转换为同样巨大的json字符串。只是为了提供信息,我的巨大对象包含一个300KB至5MB左右的图像(Base64编码)。
我在NodeJS中要解析的是:
app.use(bodyParser.urlencoded({
extended: true
}));
app.use(bodyParser.json({limit: '300kb'}));
const multer = require('multer');
const upload = multer();
const myController = require('myPath');
router.post('/myEndpoint', upload.none(), (req, res, next) => myController.doWhatever(req, res, next));
实际上,一切都很好,我巨大的json到达了我的后端,我做了与图像和其余信息有关的工作,成功响应到达了我的android应用程序。就是这样,一切正常。问题是在我的NodeJS控制台中弹出此错误:
Error: request entity too large
at readStream (...)
at getRawBody (...)
at read (...)
at rawParser (...)
at trim_prefix (...)
at Function.process_params (...)
at next (...)
at Layer.handle [as handle_request] (...)
at trim_prefix (...)
at Function.process_params (...)
at next (...)
at serveStatic (...)
at Layer.handle [as handle_request] (...)
at trim_prefix (...)
at Function.process_params (...)
at Immediate.next (...)
at Immediate._onImmediate (...)
at runCallback (...)
问题是:为什么会这样?我什至没有定义原始解析器,我只拥有json和urlEncoded。
编辑1: 它与响应有关。如果我没有发送成功或错误响应,则不会弹出此错误。