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

295
Visualizações
En mi servidor de JavaScript, ¿por qué mis datos publicados tienen llaves y comillas alrededor?

Tengo un servidor JavaScript simple para procesar un comando POST. Pero los datos de mi publicación aparecen rodeados de llaves y comillas. Estoy usando curl para enviar esto:

curl --data {title:'Odessey',author:'Homer'} localhost:4444/test/add

Pero mi servidor obtiene los datos publicados así:

{ "{title:'Odessey',author:'Homer'}": '' }

Cuando lo devuelvo al cliente, aparece con espacios eliminados y comillas convertidas:

{"{title:'Odessey',author:'Homer'}":""}

Curiosamente, si pongo comillas alrededor de la cadena en curl, obtengo exactamente lo mismo:

curl --data "{title:'Odessey',author:'Homer'}" localhost:4444/test/add

Estoy ejecutando esto en Windows 10. El problema no parece estar relacionado con curl, porque escribí otro servidor (más torpe) sin usar express, y este problema no apareció. Además, probé las otras opciones de curl para enviar datos, como --data.ascii y --data.raw , pero ninguna me ayudó. Entonces el problema debe estar en el servidor express.

Además, registro el tipo de contenido de la solicitud antes de procesar los DATOS POST. De forma predeterminada, imprime application/x-www-form-urlencoded . Por sugerencia de otros usuarios, cambié el encabezado Content-Type en la instrucción curl diciendo curl -H Content-Type:application/json , pero eso no ayudó. La declaración de registro confirma que recibió este encabezado, pero luego no puede leer los datos en absoluto, registrando req.body: {} .

Aquí está mi código de servidor:

 const express = require('express'); const app = express(); // taking this block out doesn't help. Without it, I don't get any data. app.use( express.urlencoded({ extended: true }) ); // Changing this to express.text() doesn't help. Nor does removing it. app.use(express.json()); app.post('/test/add', (req, res) => { let hdr = "Content-Type"; console.log(hdr, req.header(hdr)); console.log("req.body:", req.body); res.send(req.body); }) var server = app.listen(4444, function() { var urlStr = "http://" + host + ':' + port; console.log ("Example app listeneing at", urlStr); })

Nota: he actualizado esto ligeramente desde que lo publiqué por primera vez.

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Debería poder hacer esto agregando el siguiente encabezado: -H 'Content-Type: application/json' . Lo recibe como un parámetro GET (algo así como localhost:4444/test/add?{title:'Odessey',author:'Homer'} ).

about 4 years ago · Juan Pablo Isaza Relatório

0

Mario Martín Moreno tuvo una sugerencia muy útil para agregar una opción -H a mi comando curl. Esto era correcto, pero la forma no era del todo correcta. @dandavis tenía razón en que solo las comillas dobles eran válidas para las claves. Y @tevemader tenía razón en que estaba usando un archivo de encabezado de forma incorrecta. Pero el detalle crucial fue que necesitaba escapar de mis caracteres de cita con una barra invertida. Así que la línea de rizo completa se veía así:

curl --data {\"title\":\"Odessey\",\"author\":\"Homer\"} -H Content-Type:application/json localhost:4444/test/add

Advertencias: las comillas simples no funcionan incluso solo con los valores, e incluso con la barra invertida para escapar de ellos. Y todavía no sé por qué necesitaba hacer esto aquí, pero no con mi servidor anterior que no usaba express. Pero al menos sé cómo usar curl para enviar mis datos. Gracias a todos los que respondieron con sugerencias útiles.

about 4 years ago · Juan Pablo Isaza 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