Nodejsアプリケーションで次のようにRESTエンドポイントを作成しています。
私のserver.jsには、次のコードがあります。
var express = require('express');
var app = express();
app.use(express.json({ limit: '50mb' }));
app.use(express.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));
また、重複する可能性のある質問で提案されているように、express.jsonとexpres.urlencodedを使用する代わりに、以下のコードを試しました。
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
app.use(require('./routes/APIRoutes'));
APIRoutesファイルには、次のコードがあります。
/* --- INIT --- */
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
var urlencodedParser = bodyParser.urlencoded({ limit: '50mb', extended: true });
router.post('...', urlencodedParser, function (req, res) {
...
});
制限を高く設定するために、さまざまな組み合わせと順序を試しました。しかし現在、2kbのペイロードを送信するたびに、413 "(Payload Too Large)"エラーが返されます。
制限を設定するための正しい場所は何ですか?
私は、TKJohnの提案された複製の受け入れられない回答の1つで、私の問題の解決策を見つけました。コードが次のようになるように、パラメーター制限を追加する必要がありました。
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: true, parameterLimit: 50000 }));
追加後、それは機能しました!
APIRoutes.jsからコードを削除することもできました
router.use(bodyParser.json({ limit: '50mb' }));
router.use(bodyParser.urlencoded({ limit: '50mb', extended: true }));
過去数時間オンラインで検索しようとしましたが、413ペイロードの解決策が見つかりませんでした
rlencoded.jsで判明しました。body-parserモジュール内には、制限を処理する追加のオプションがあります。
parameterLimitやarrayLimitなどのオプションは、パラメーターまたは配列のサイズがデフォルトで許可されている制限(配列サイズの場合は100)を超えた場合に修正する項目です。
最新バージョンのexpress
を使用している場合は、これをexpress
ですぐに使用できます。
let express = require('express');
let app = express();
app.use(express.json({limit: '50mb', extended: true}));
app.use(express.urlencoded({limit: "50mb", extended: true, parameterLimit:50000}));
これはexpress
にバンドルされているbodyParser
バージョンでのみ機能することに注意してください(bodyParser
はexpress
に追加されましたリリース 4.16. )