【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

相关文章

NFS实现多服务器文件的共享的方法步骤

《NFS实现多服务器文件的共享的方法步骤》NFS允许网络中的计算机之间共享资源,客户端可以透明地读写远端NFS服务器上的文件,本文就来介绍一下NFS实现多服务器文件的共享的方法步骤,感兴趣的可以了解一... 目录一、简介二、部署1、准备1、服务端和客户端:安装nfs-utils2、服务端:创建共享目录3、服

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Apache Tomcat服务器版本号隐藏的几种方法

《ApacheTomcat服务器版本号隐藏的几种方法》本文主要介绍了ApacheTomcat服务器版本号隐藏的几种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1. 隐藏HTTP响应头中的Server信息编辑 server.XML 文件2. 修China编程改错误

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用