持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第7天,点击查看活动详情
Hello World
需求:浏览器文本内容Hello World
const http = require('http')
const server = http.createServer((req, res) => {
res.writeHead(200, {
'Content-type': 'text/plain',
})
res.write('Hello World!')
res.end()
})
server.listen(8000, '127.0.0.1', () => {
console.log('Listening to port 8000...')
})
代码说明:
- 使用
http模块的createServer的方法创建服务器实例server - 使用
res.writeHead定义响应的内容,案例中设置了状态码和文件类型 - 使用
res.write向可写流res中写入数据,然后用res.end发送数据 - 使用
server实例的listen方法开启服务器,并设置端口和地址
浏览器中的输出结果:
读取JSON数据
const http = require('http')
const myJsonData = {
status: 'success',
data: {
id: '5b8b9572e116fb3714e6faba',
content: '君问归期未有期,巴山夜雨涨秋池。',
origin: {
title: '夜雨寄北',
dynasty: '唐代',
author: '李商隐',
},
},
}
const server = http.createServer((req, res) => {
res.writeHead(200, {
'Content-type': 'application/json',
})
res.write(JSON.stringify(myJsonData))
res.end()
})
server.listen(8000, '127.0.0.1', () => {
console.log('Listening to port 8000...')
})
代码说明:
- 将
Content-type类型设置为application/json resp.write的参数是字符串类型,所以使用JSON.stringify处理对象
浏览器中的输出结果:
添加路由
// ...省略相同的代码
const server = http.createServer((req, res) => {
const pathName = req.url
// Overview Page
if (pathName === '/' || pathName === '/overview') {
res.end('overview page')
// Project Page
} else if (pathName === '/product') {
res.end('product page')
// API Page
} else if (pathName === '/api') {
res.writeHead(200, {
'Content-type': 'application/json',
})
res.end(JSON.stringify(myJsonData))
// Not Found
} else {
res.writeHead(404, {
'Content-type': 'text/html',
})
res.end('<h1>not found</h1>')
}
})
// ...省略相同的代码
代码说明:
- 通过
req.url的值区别不同路由页面 - 在
if..else...语句中定义页面内容
未找到页面时的显示如下:
参考资料: