Middleware Body Limit
Le middleware Body Limit permet de limiter la taille du corps d’une requête.
Ce middleware utilise d’abord la valeur de l’en-tête Content-Length de la requête, si cet en-tête est présent. Sinon, il lit le corps dans le flux et exécute un gestionnaire d’erreurs si la taille dépasse la limite spécifiée.
Importation
import { Hono } from 'hono'
import { bodyLimit } from 'hono/body-limit'Utilisation
const app = new Hono()
app.post(
'/upload',
bodyLimit({
maxSize: 50 * 1024, // 50kb
onError: (c) => {
return c.text('overflow :(', 413)
},
}),
async (c) => {
const body = await c.req.parseBody()
if (body['file'] instanceof File) {
console.log(`Got file sized: ${body['file'].size}`)
}
return c.text('pass :)')
}
)Options
obligatoire maxSize: number
La taille maximale du fichier à limiter. La valeur par défaut est 100 * 1024, soit 100kb.
facultatif onError: OnError
Le gestionnaire d’erreurs appelé si la taille spécifiée est dépassée.
Utilisation avec Bun pour les requêtes volumineuses
Si le middleware Body Limit est utilisé explicitement pour autoriser un corps de requête plus volumineux que la valeur par défaut, vous devrez peut-être modifier la configuration de Bun.serve en conséquence. Au moment de la rédaction, la limite par défaut du corps des requêtes de Bun.serve est de 128 Mio. Si vous définissez le middleware Body Limit de Hono sur une valeur supérieure, les requêtes échoueront quand même et le gestionnaire onError spécifié dans le middleware ne sera pas appelé. En effet, Bun.serve() définit le code de statut sur 413 et ferme la connexion avant de transmettre la requête à Hono.
Pour accepter des requêtes de plus de 128 Mio avec Hono et Bun, vous devez également définir la limite de Bun :
export default {
port: process.env['PORT'] || 3000,
fetch: app.fetch,
maxRequestBodySize: 1024 * 1024 * 200, // your value here
}ou, selon votre configuration :
Bun.serve({
fetch(req, server) {
return app.fetch(req, { ip: server.requestIP(req) })
},
maxRequestBodySize: 1024 * 1024 * 200, // your value here
})