Entonces, uno puede intentar obtener el siguiente objeto JSON:
$ curl -i -X GET http://echo.jsontest.com/key/value/anotherKey/anotherValue
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=ISO-8859-1
Date: Wed, 30 Oct 2013 22:19:10 GMT
Server: Google Frontend
Cache-Control: private
Alternate-Protocol: 80:quic,80:quic
Transfer-Encoding: chunked
{
"anotherKey": "anotherValue",
"key": "value"
}
$
¿Hay alguna manera de producir exactamente el mismo cuerpo en una respuesta de un servidor usando node o express? Claramente, uno puede configurar los encabezados e indicar que el tipo de contenido de la respuesta será "application / json", pero luego hay diferentes formas de escribir / enviar el objeto. El que he visto que se usa comúnmente es mediante el uso de un comando de la forma:
response.write(JSON.stringify(anObject));
Sin embargo, esto tiene dos puntos donde uno podría argumentar como si fueran "problemas":
- Estamos enviando una cadena.
- Además, al final no hay un nuevo carácter de línea.
Otra idea es usar el comando:
response.send(anObject);
Esto parece estar enviando un objeto JSON basado en la salida de curl similar al primer ejemplo anterior. Sin embargo, no hay un nuevo carácter de línea en el extremo del cuerpo cuando el rizo se usa nuevamente en un terminal. Entonces, ¿cómo se puede escribir algo como esto con un nuevo carácter de línea agregado al final usando node o node / express?
fuente
res.send
configurará automáticamentecontent-type
a JSON, si el elemento enviado es un objeto o matriz.res.end()
en tuhttp
ejemplo (no expreso)res.send()
no está trabajando. Por favor corríjalo, si es un error.res.end()
Funciona correctamente Gracias por cierto.Desde Express.js 3x, el objeto de respuesta tiene un método json () que establece todos los encabezados correctamente y devuelve la respuesta en formato JSON.
Ejemplo:
fuente
Si está intentando enviar un archivo json, puede usar transmisiones
fuente
La
res.json()
función debería ser suficiente para la mayoría de los casos.La
res.json()
función convierte el parámetro que pasa a JSON usandoJSON.stringify()
y establece elContent-Type
encabezado paraapplication/json; charset=utf-8
que los clientes HTTP sepan analizar automáticamente la respuesta.fuente
si usa Express, puede usar esto:
o solo esto
fuente
Puede prettificarlo usando pipe y uno de los muchos procesadores. Su aplicación siempre debe responder con la menor carga posible.
https://github.com/ddopson/underscore-cli
fuente
Puede hacer una ayuda para eso: haga una función de ayuda para que pueda usarla en todas partes en su aplicación
Aquí está mi ruta de temas donde estoy tratando de obtener todos los temas
Respuesta que obtenemos
fuente
Puede usar un middleware para establecer el Tipo de contenido predeterminado y establecer el Tipo de contenido de manera diferente para API particulares. Aquí hay un ejemplo:
fuente
Para el encabezado de la mitad de la pregunta, voy a dar un saludo
res.type
aquí:es equivalente a
Fuente: documentos express :
fuente
Versión anterior del uso Express
app.use(express.json())
obodyParser.json()
lea más sobre el middleware bodyParserEn la última versión de express podríamos simplemente usar
res.json()
fuente
req.body
sea el objeto enviado como cuerpo de la solicitud.