【Node.js工程师养成计划】之原生node开发web服务器

2024-04-29 10:52

本文主要是介绍【Node.js工程师养成计划】之原生node开发web服务器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

一、使用node创建http服务器

在这里插入图片描述

var http = require('http');// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){console.log('request');res.write('66666666888') // 响应数据res.end() // 断开服务器
})

二、服务器响应不同数据类型

var http = require('http');// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){console.log('request');res.setHeader('Content-type', 'text/plain;charset=utf-8')res.write('你好')res.end() // 断开服务器
})

在这里插入图片描述

var http = require('http');// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){console.log('request');// res.setHeader('Content-type', 'text/plain;charset=utf-8')res.setHeader('Content-type', 'text/html;charset=utf-8')res.write('<h1>你好</h1>')res.end() // 断开服务器
})

在这里插入图片描述

var http = require('http');
var fs = require('fs')// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){if (req.url == '/') {fs.readFile('./index.html', 'utf-8', function(err, data){res.write(data)res.end()})} else {fs.readFile('./aa.jpg', function(err, data){res.end(data)})}})

在这里插入图片描述

三、http不同请求方法处理

在这里插入图片描述

var http = require('http');
var fs = require('fs')
var url = require('url')// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){console.log(11,req.method)if (req.method === 'GET') {console.log(url.parse(req.url, true).query.id)if (req.url == '/') {fs.readFile('./index.html', 'utf-8', function(err, data){res.write(data)res.end()})} else {fs.readFile('./aa.jpg', function(err, data){res.end(data)})}} else if (req.method === 'POST') {}
})

四、接收处理post消息数据

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><h1>你好啊 zm</h1><img src="./aa.jpg" alt="" width="50" height="50"><div><form action="./" method="post"><input type="text" name="username"> <br><input type="text" name="age"><input type="submit" value="post提交"></form></div>
</body>
</html>
var http = require('http');
var fs = require('fs')
// var url = require('url')// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){console.log('method:',req.method)if (req.method === 'GET') {// console.log(url.parse(req.url, true).query.id)if (req.url == '/') {fs.readFile('./index.html', 'utf-8', function(err, data){res.write(data)res.end()})} else {fs.readFile('./aa.jpg', function(err, data){res.end(data)})}} else if (req.method === 'POST') {// 请求体中var data = ''req.on('data', function(d){data+=dconsole.log(d)})req.on('end', function(){console.log(require('querystring').parse(data))})}
})

在这里插入图片描述

在这里插入图片描述

五、服务器代码模块拆分

server.js

var http = require('http');
var fs = require('fs')
// var url = require('url')
var router = require('./router')// 获取到服务器实例对象
var server = http.createServer()
server.listen(8080, function() {console.log('http://127.0.0.1:8080');
})server.on('request', function(req, res){// console.log('request');// // res.setHeader('Content-type', 'text/plain;charset=utf-8')// res.setHeader('Content-type', 'text/html;charset=utf-8')// res.write('<h1>你好</h1>')// res.end() // 断开服务器console.log('method:',req.method)router(req, res)
})

router.js

var fs = require('fs')
var controller = require('./controller')module.exports = (req, res) => {if (req.method === 'GET') {// console.log(url.parse(req.url, true).query.id)if (req.url == '/') {controller.index(res)} else {fs.readFile('./aa.jpg', function(err, data){res.end(data)})}} else if (req.method === 'POST') {// 请求体中var data = ''req.on('data', function(d){data+=dconsole.log(d)})req.on('end', function(){controller.user(require('querystring').parse(data))})}
}

controller.js

var fs = require('fs')module.exports = {index(res){fs.readFile('./index.html', 'utf-8', function(err, data){res.write(data)res.end()})},user(postData, res){// 业务逻辑代码console.log(postData)}
}

这篇关于【Node.js工程师养成计划】之原生node开发web服务器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945885

相关文章

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

解决JavaWeb-file.isDirectory()遇到的坑问题

《解决JavaWeb-file.isDirectory()遇到的坑问题》JavaWeb开发中,使用`file.isDirectory()`判断路径是否为文件夹时,需要特别注意:该方法只能判断已存在的文... 目录Jahttp://www.chinasem.cnvaWeb-file.isDirectory()遇

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

查询SQL Server数据库服务器IP地址的多种有效方法

《查询SQLServer数据库服务器IP地址的多种有效方法》作为数据库管理员或开发人员,了解如何查询SQLServer数据库服务器的IP地址是一项重要技能,本文将介绍几种简单而有效的方法,帮助你轻松... 目录使用T-SQL查询方法1:使用系统函数方法2:使用系统视图使用SQL Server Configu

基于Python开发PPTX压缩工具

《基于Python开发PPTX压缩工具》在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,不便于传输和存储,所以本文将使用Python开发一个PPTX压缩工具,需要的可以了解下... 目录引言全部代码环境准备代码结构代码实现运行结果引言在日常办公中,PPT文件往往因为图片过大而导致文件体积过大,