Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

216
Visualizações
¿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
over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

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

over 4 years ago · Santiago Trujillo Relatório

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 } }
over 4 years ago · Santiago Trujillo Relatório

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda