Forma adequada de retornar JSON usando o nó ou Express
Assim, pode-se tentar ir buscar o seguinte objecto 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"
}
$
Existe uma maneira de produzir exatamente o mesmo corpo em uma resposta de um servidor usando nó ou expresso? Claramente, pode-se definir os cabeçalhos e indicar que o tipo de conteúdo da resposta será "application/json", mas depois há diferentes maneiras de escrever/enviar o objeto. A que eu tenho visto ser comumente usada é usando um comando do formulário:
response.write(JSON.stringify(anObject));
Contudo, isto tem dois pontos onde se poderia argumentar como se fossem "problemas":
- Estamos a enviar um cordel.
- Além disso, não há um novo caractere de linha no final.
Outra ideia é usar o comando:
response.send(anObject);
Isto parece estar enviando um objeto JSON baseado na saída de cacho semelhante ao primeiro exemplo acima. No entanto, não há um novo caractere de linha no final do corpo quando o encaracolamento está sendo usado novamente em um terminal. Então, como se pode realmente escrever algo como isto com um novo caractere de linha anexado no final usando nó ou nó/expressão?
Essa resposta também é uma string, se você quiser enviar a resposta pré-estificada, por alguma razão estranha, você poderia usar algo como
JSON.stringify(anObject, null, 3)
É importante que você configure o cabeçalho
Content-Type' para
application/json', também.Prettified:
I'não sei exatamente por que você quer terminar com uma nova linha, mas você poderia apenas fazer
JSON.stringify(...) + '\n'
para conseguir isso.Expresso
Em expresso, você pode fazer isso mudando as opções em seu lugar.
Não é realmente recomendado definir para 40_
Depois podias responder com um pastor.
It'utilizará os
'espaços json
' configuração para embelezá-lo.Desde Express.js 3x o objeto de resposta tem um método json() que define todos os cabeçalhos corretamente para você e retorna a resposta no formato JSON.
Exemplo:
Se você está tentando enviar um arquivo json, você pode usar streams