nodejs中怎么构建一个http服务
发表于:2025-12-05 作者:千家信息网编辑
千家信息网最后更新 2025年12月05日,nodejs中怎么构建一个http服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。内容索引:Node中的http模块使
千家信息网最后更新 2025年12月05日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安全错误
数据库的锁怎样保障安全
用linux搭建服务器
链家凶宅数据库曝光
关闭增强安全配置服务器
数据库侯选码
事件发生后网络安全事件分级
苏州软件开发管理方法
池州安卓软件开发公司
服务器在香港的项目安全吗
数据库管理员可以做多久
泰坦之旅怎么加入另一个服务器
海康服务器标签尺寸
web服务器攻击方式
2019年软件开发薪酬行情
中心站(服务器)解释
怎么在数据库更改后台密码
软件开发哪家做得好
数据库恢复的实现技术
连接服务器的网络打印机
自己架设ftp服务器
数据库数据入本地文件
取消使用代理服务器是为什么
大专数据库管理员工资多少
浪潮服务器管理口地址
如何查询sql数据库的表名
水怪视频软件开发
黄浦区银联数据库前景
长岛直播软件开发解决方案
网络安全工程的特点
需要认证的网络安全么
数据库恢复的实现技术