Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

187
Views
¿Cómo detectar si el cuerpo de la solicitud se envió o no?

Estoy trabajando con express + json body parser. Para propósitos de validación necesito distinguir entre

  • El cuerpo de solicitud de objeto vacío fue enviado por el usuario ( {} )
  • el usuario no envió ningún cuerpo de solicitud

ya que estoy tratando de proporcionar mensajes de error razonables, y en un caso necesito indicarle al usuario que agregue los campos que faltan, mientras que en el otro caso es posible que ni siquiera sepan que el cuerpo de la solicitud debe enviarse, y la prioridad es una advertencia ellos sobre esto.

Esto me parece imposible actualmente, ya que el analizador de cuerpo json establece request.body en {} en caso de que no se haya proporcionado ningún cuerpo de solicitud, referencia:

https://github.com/expressjs/body-parser/blob/master/lib/types/json.js#L72

Mi pregunta es, al usar el analizador de cuerpo json, ¿es posible detectar si el cuerpo de la solicitud realmente fue enviado por el cliente o no? Entonces, ¿cómo implementaría una función como esta?

 import { Request } from 'express' function didTheUserSendRequestBody(request: Request): boolean { // What do? }

Lo que devuelve true cuando mi punto final es golpeado así:

 curl -X POST http://localhost:5000/foo -H "Content-Type: application/json" -d '{}'

Y false por esto:

 curl -X POST http://localhost:5000/foo
about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Body-parser json tiene la opción de verificación . Puede verificar los datos sin procesar aquí.

 app.use(express.json({ verify: (req, res, buf, encoding) => { // check buff is empty ? and attach result to req ? } }))

con verificar es función con 4 argumentos: " donde buf es un búfer del cuerpo de solicitud sin procesar "

https://github.com/expressjs/body-parser#verificar

about 4 years ago · Juan Pablo Isaza Report

0

tal vez solo pueda verificar el tipo de contenido enviado, si el usuario no lo adjunta, el valor predeterminado será "indefinido".

 function didTheUserSendRequestBody(request: Request): boolean { if (!request.get('Content-Type')) { // return any message } }
about 4 years ago · Juan Pablo Isaza Report

0

La forma más fácil que conozco es comprobando si req.body es veraz

 function didTheUserSendRequestBody(request: Request): boolean { if(req.body){ // Do stuff } }

Según https://developer.mozilla.org/en-US/docs/Glossary/Truthy MDN, un objeto vacío '{}' es verdadero. Si no se envía ningún cuerpo, debería estar indefinido cuando intente acceder a req.body, que es falso.

Consulte https://expressjs.com/en/api.html#req para obtener más detalles

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!