nodejs中怎么构建一个http服务,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

成都创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站设计、成都做网站、外贸网站建设、松江网络推广、微信平台小程序开发、松江网络营销、松江企业策划、松江品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;成都创新互联为所有大学生创业者提供松江建站搭建服务,24小时服务热线:18982081108,官方网址:www.cdcxhl.com
内容索引:
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-type
const 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 }}
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
网站题目:nodejs中怎么构建一个http服务
分享URL:http://www.jxjierui.cn/article/goihei.html


咨询
建站咨询
