20. HTTP (1)

图片来源网络,侵删

这是一个简单的 HTTP web 服务器的示例:

const http = require('http')

const port = 3000

const server = http.createServer((req, res) => {
  res.statusCode = 200
  res.setHeader('Content-Type', 'text/plain')
  res.end('你好世界\n')
})

server.listen(port, () => {
  console.log(`服务器运行在 http://${hostname}:${port}/`)
})

简要分析一下。 这里引入了 http 模块

使用该模块来创建 HTTP 服务器。

服务器被设置为在指定的 3000 端口上进行监听。 当服务器就绪时,则 listen 回调函数会被调用。

传入的回调函数会在每次接收到请求时被执行。 每当接收到新的请求时,request 事件会被调用,并提供两个对象:一个请求(http.IncomingMessage 对象)和一个响应(http.ServerResponse 对象)。

request 提供了请求的详细信息。 通过它可以访问请求头和请求的数据。

response 用于构造要返回给客户端的数据。

在此示例中:

res.statusCode = 200

设置 statusCode 属性为 200,以表明响应成功。

还设置了 Content-Type 响应头:

res.setHeader('Content-Type', 'text/plain')

最后结束并关闭响应,将内容作为参数添加到 end():

res.end('你好世界\n')

执行 GET 请求

const https = require('https')
const options = {
  hostname: 'nodejs.cn',
  port: 443,
  path: '/todos',
  method: 'GET'
}

const req = https.request(options, res => {
  console.log(`状态码: ${res.statusCode}`)

  res.on('data', d => {
    process.stdout.write(d)
  })
})

req.on('error', error => {
  console.error(error)
})

req.end()

执行 POST 请求

const https = require('https')

const data = JSON.stringify({
  todo: '做点事情'
})

const options = {
  hostname: 'nodejs.cn',
  port: 443,
  path: '/todos',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Content-Length': data.length
  }
}

const req = https.request(options, res => {
  console.log(`状态码: ${res.statusCode}`)

  res.on('data', d => {
    process.stdout.write(d)
  })
})

req.on('error', error => {
  console.error(error)
})

req.write(data)
req.end()

PUT 和 DELETE

PUT 和 DELETE 请求使用相同的 POST 请求格式,只需更改 options.method 的值即可。
文章来源 node中文官方 http://nodejs.cn/

更多知识点 请关注:笔墨是小舟

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。