nodejs入门教程16:nodejs res

常用属性

  • statusCode: 设置或获取HTTP状态码。例如,200表示成功,404表示未找到。
  • statusMessage: 设置或获取与状态码相对应的状态消息。这通常不需要手动设置,因为Node.js会根据statusCode自动设置它。
  • headersSent: 一个布尔值,表示响应头是否已经被发送。
  • sendDate: 一个布尔值,表示是否在响应头中包含日期和时间。默认值为true
  • header: 一个对象,包含将要发送到客户端的响应头。注意,这里的头名称是首字母大写的,与IncomingMessageheaders属性不同。

常用方法

  • writeHead(statusCode[, statusMessage][, headers]): 发送响应头到客户端。statusCode是HTTP状态码,statusMessage是可选的状态消息,headers是一个包含响应头的对象。这个方法必须在end方法之前调用,且只能调用一次。
  • write(chunk[, encoding][, callback]): 向响应体中写入数据。chunk可以是一个字符串或一个Buffer对象。encoding是可选的,用于指定字符串的编码。callback是可选的,当数据被刷新到客户端时调用。
  • end([data][, encoding][, callback]): 结束响应,并可选地向响应体中写入最后的数据。如果data被指定,它相当于先调用write再调用endencodingcallbackwrite方法相同。
  • setHeader(name, value): 设置单个响应头的值。如果头已经存在,则替换它的值。
  • removeHeader(name): 移除一个已经设置的响应头。
  • addHeader(name, value): 向响应头中添加一个值,而不替换现有的值(如果头已经存在)。这对于设置多个相同名称的头(如Set-Cookie)很有用。

示例

以下是一个简单的HTTP服务器示例,它使用http.ServerResponse来发送响应:

javascript 复制代码
const http = require('http');

const server = http.createServer((req, res) => {
  // 设置响应头
  res.writeHead(200, { 'Content-Type': 'text/plain' });

  // 向响应体中写入数据
  res.write('Hello, ');
  res.write('world!\n');

  // 结束响应
  res.end();
});

server.listen(3000, '127.0.0.1', () => {
  console.log('Server running at http://127.0.0.1:3000/');
});

在这个例子中,服务器监听在127.0.0.1:3000上,当接收到请求时,它设置响应头为200 OKContent-Type: text/plain,然后向响应体中写入"Hello, world!\n",最后结束响应。

注意事项

  • 响应头必须在响应体之前发送,即你必须在调用writeend之前调用writeHead
  • 一旦响应头被发送(无论是通过writeHead还是隐式地通过第一次调用writeend),你就不能再修改它们。
  • 如果你没有显式调用writeHead,Node.js会在你第一次调用writeend时自动为你设置一个默认的响应头。
  • 响应结束后,不能再向它写入数据。如果你尝试这样做,将会触发一个错误。

了解并熟练使用http.ServerResponse的属性和方法对于构建有效的Node.js HTTP服务器至关重要。

相关推荐
玲小珑9 分钟前
LLMOps开发(三) RAG
langchain·node.js·ai编程
逾明1 小时前
在项目中使用Volta控制node版本
前端·node.js
总之就是非常可爱1 小时前
浏览器缓存机制:强缓存 vs 协商缓存
前端·面试·node.js
赵晟鼎1 小时前
node常用fs文件操作方法
前端·javascript·node.js
丁总学Java3 小时前
如何用 nvm alias default 18.20.8 实现全局 Node.js 版本管理?一篇保姆级指南!!!
linux·node.js·vim
菠菜70717 小时前
Node十六章(pnpm原理及软硬链接)
前端·javascript·node.js
孟陬18 小时前
如何让 vite 编译含有 Node.js 模块的 TS 文件 ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING
typescript·node.js
孟陬20 小时前
三种解决办法 ReferenceError: __dirname is not defined in ES module scope
node.js
前端的阶梯20 小时前
深入理解流式传输数据(一)
node.js
Mintopia1 天前
Node.js 中 crypto 模块的实用指南与应用示例
前端·javascript·node.js