在我的应用程序中,我让我的Nodejs服务器发送JSON响应。我找到了两种方法,但我不确定它们之间的区别。
一种方法是
var json = JSON.stringify(result.rows);
response.writeHead(200, {'content-type':'application/json', 'content-length':Buffer.byteLength(json)});
response.end(json);
我的另一种方式是
var json = JSON.stringify(result.rows);
response.setHeader('Content-Type', 'application/json');
response.end(json);
两种方式都有效,我只是想知道两者之间的区别是什么,以及何时应该使用另一种方式。
答案 0 :(得分:38)
response.setHeader()
只允许您设置单数标题。
response.writeHead()
将允许您设置有关响应头的所有内容,包括状态代码,内容和多个标题。
考虑API:
response.setHeader(name, value)
为隐式标头设置单个标头值。如果这个标题 已存在于待发送标头中,其值将被替换。 如果需要发送多个标头,请在此处使用字符串数组 同名。
var body = "hello world";
response.setHeader("Content-Length", body.length);
response.setHeader("Content-Type", "text/plain");
response.setHeader("Set-Cookie", "type=ninja");
response.status(200);
response.writeHead(statusCode, [reasonPhrase], [headers])
向请求发送响应标头。状态代码是3位数 HTTP状态代码,如404.最后一个参数,标题,是 响应标头。可选地,人们可以提供人类可读的 reasonPhrase作为第二个参数。
var body = "hello world";
response.writeHead(200, {
"Content-Length": body.length,
"Content-Type": "text/plain",
"Set-Cookie": "type=ninja"
});