Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

297
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda