nodejs中怎么构建一个http服务
发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,nodejs中怎么构建一个http服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。内容索引:Node中的http模块使
千家信息网最后更新 2025年01月29日nodejs中怎么构建一个http服务
nodejs中怎么构建一个http服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
内容索引:
Node中的http模块
使用node构建http服务
实现一个静态资源服务器
使用模板引擎处理动态网页
结合数据库渲染动态页面
实现一个留言本案例
第三方HTTP服务框架
Node中的http模块
TCP和UDP 都属于传输层协议
HTTP,用于浏览器和服务器端进行通信,由于HTTP协议本身并不考虑数据如何传输等其他问题,所以属于应用层协议。
Node提供了基本的http和https模块用于HTTP 和 HTTPS的封装
const http = require('http')const server = http.createServer()
1.1Server实例
API | 说明 |
---|---|
Event: 'close' | 服务器关闭时触发 |
Event: 'request' | 服务器收到请求消息时触发 |
server.close() | 关闭服务 |
server.listening | 获取服务状态 |
1.2 请求对象
API | 说明 |
---|---|
request.method | 请求方法 |
request.url | 请求路径 |
request.header | 请求头 |
request.httpVersioni | 请求http协议版本 |
1.3 响应对象
API | 说明 |
---|---|
response.end() | 结束响应 |
response.setHeader(name, value) | 设置响应头 |
response.removeHeader(name, value) | 删除响应头 |
response.statusCode | 设置响应状态码 |
response.statusMessage | 设置响应状态短语 |
response.write() | 写入响应数据 |
response.writeHead() | 写入响应头 |
2.1 hello world
const http = require('http');const path = require('path');const mimie = require('mime'); // 返回扩展名对应的content-typeconst fs = require('fs');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => { // res.setHeader('Content-type', 'text/plain charset=utf-8'); // 响应字符串 const url = req.url; if (url === '/') { fs.readFile(`./index.html`, (err, data) => { if (err) { throw err; } res.statusCode = 200; res.setHeader('Content-type', 'text/html; charset=utf-8'); // 响应html res.end(data); }); } else if (url.startsWith('/assets/')) { fs.readFile(`.${url}`, (err, data) => { if (err) { res.setHeader('Content-type', 'text/plain; charset=utf-8'); res.statusCode = 404; res.end('404 Not Fund.'); } // path.extname(url) 获取文件对应的扩展名 const contentType = mimie.getType(path.extname(url)); res.statusCode = 200; res.setHeader('Content-type', `${contentType}; charset=utf-8`); // 设置响应头 res.end(data); }); } else { res.statusCode = 404; res.setHeader('Content-type', 'text/plain; charset=utf-8'); res.end('404 Not Fund.'); } // console.log('req', Object.keys(req));});server.listen(port, hostname, () => { console.log(`server running at http://${hostname}:${port}`);});
contentType对照表:http://tool.oschina.net/commons
常用模板引擎:
marko
nunjucks
handlebars.js
ejs
Pug
art-template
template-engine.js
const http = require('http');const path = require('path');const fs = require('fs');const template = require('art-template');const hostname = '127.0.0.1';const port = 3000;const server = http.createServer((req, res) => { const url = req.url; const fileBaseUrl = path.join(__dirname); if (url === '/') { fs.readFile('./template-engine.html', (err, data) => { data = data.toString(); const ret = template.render(data, { msg: 'world', todos: [ { title: '吃饭', completed: false }, { title: '睡觉', completed: true }, { title: '打豆豆', completed: false } ] }); res.setHeader('Content-type', 'text/html charset=utf-8'); // 响应字符串z res.end(ret); res.statusCode = 200; }); }});server.listen(port, hostname, () => { console.log(`server running at http://${hostname}:${port}`);});
template-engine.html
Document 我是我{{ msg }}
- {{ each todos }}
- {{ $value.title }} {{ /each }}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。
服务
服务器
数据
模块
状态
内容
动态
字符
字符串
对象
引擎
扩展名
模板
传输
帮助
清楚
实例
对此
对照表
常用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库 历史数据
数据库中的数据关系表示
恒宝股份的软件开发人员
网络安全服务证书
大数据网络技术服务以客为尊
三级网络技术未来教育题库
短信服务器设置
武隆区工商软件开发服务电话多少
服务器内存64够了没
温州网络技术培训班
软件开发毕业生到深圳找工作
外包软件开发有必要去吗
江苏网络时间服务器供应商云主机
腾讯用的数据库
ios获取网页数据库
盗号服务器如何购买.
软件开发中经典阶段包括哪些
ionic连数据库
青少年网络安全计划书
联合国商品贸易数据库两岸
接收服务器
数据库真值用什么表示
数据库报错怎么办
台州软件开发专业
心灵终结服务器连接中断
软件开发项目申请书范文
软件开发工程师35岁之后的前途
魔兽世界美女最多的服务器是哪个
软件开发工作英文简历
数据库中快速查找约束