做旅游网站教程,手机赚钱一天400元,关于建设学校网站策划书的范本,江苏省建设厅网站 投诉http模块
搭建服务器的步骤
① 导入 http 模块
② 创建 web 服务器实例
③ 为服务器实例绑定 request 事件#xff0c;监听客户端的请求
④ 启动服务器
// ① 导入 http 模块
const http require(http);// ② 创建 web 服务器实例
const server http.createServer();/…http模块
搭建服务器的步骤
① 导入 http 模块
② 创建 web 服务器实例
③ 为服务器实例绑定 request 事件监听客户端的请求
④ 启动服务器
// ① 导入 http 模块
const http require(http);// ② 创建 web 服务器实例
const server http.createServer();// ③ 为服务器实例绑定 request 事件监听客户端的请求
// server.on(事件名称, 处理函数);// 只要客户端发来请求则会触发下面的事件
server.on(request, function () {console.log(你的请求我收到了);
});// ④ 启动服务器
server.listen(3000, function () {// 服务器启动之后会触发这个回调函数console.log(my first web server start~);
});测试
node执行你的JS代码打开客户端浏览器、postman向服务器发送请求localhost:3000查看代码中的请求事件是否触发了如果触发了表示请求成功了
使用http搭建服务器的问题 代码如果更改了则需要重新启动服务器你的代码才会生效 Ctrl C , 先终止服务再次执行 node xxx.js 重新启动服务即可 vscode 终端的使用问题
URL的组成
http://www.xxxx.com:3000/yyy/zzz?id123
协议 httphttps 主机地址找到服务器 指向服务器的域名localhost 永远指向自己的计算机服务器的IP地址 127.0.0.1 永远指向自己的计算机 端口 作用是区分服务器上的每个服务的可以通过 netstat -an 查看已经被占用的端口 文件路径部分/api/getbooks index.html /a/b/c/xxx.html查询字符串部分GET请求的参数
获取请求相关的信息
server.on(request, function (req) {// req 对象是根据 http.IncomingMessage类得来的对象// 通过这个对象我们可以得到请求的相关信息req.url // 表示请求的urlreq.method // 表示请求方式req.headers // 表示请求头
})得到请求相关的信息之后方便服务器做出判断
服务器做出响应
server.on(request, function (req, res) {// 所有和请求相关的信息都是通过req对象获取的// 所有和响应相关的信息都通过res来完成。res这里是response的意思。// console.log(res instanceof http.ServerResponse); // true// res.end(); // 用于做出响应// res.setHeader(name, value); // 设置响应头// res.statusCode // 设置响应状态码// res.writeHead(状态码, {响应头})// 告诉浏览器响应的数据是什么类型、什么编码// res.setHeader(Content-Type, text/html; charsetutf-8);// res.statusCode 404; // 随便设置的状态码实际中应该是200res.writeHead(200, {// key: valueContent-Type: text/html; charsetutf-8,Author: LaoTang, // 随便写的实验一下。值不能用中文});res.end(你好浏览器你的请求我收到了这是给你的回应);
})GET方式的接口 提供数据给客户端终极目标 具体的获取书籍的接口 读取books.json里面的内容 fs.readFile() — 读取的结果是json格式require() — 读取的结果是array格式 把读取的结果响应给客户端 — 响应的结果必须是json字符串格式遇到的问题 解决跨域的问题 – 设置响应头解决编码的问题 – 设置响应头
POST方式的接口
接收并保存数据终极目标如何接收POST请求体 定义空字符串比如str注册req的data事件用于接收客户端提交的数据注册req的end事件当完全接收到了客户端提交的数据会触发这个事件 保存数据做出响应
// 加载所需的模块
const fs require(fs);
const path require(path);
const querystring require(querystring);
// 搭建服务器
const http require(http);
const server http.createServer();
server.listen(3006, () console.log(图书管理案例接口服务启动了));server.on(request, (req, res) {// 客户端都会发送什么类型的请求请求的url又是什么let method req.method; // 获取请求方式let url req.url; // 获取请求的url// 定义书籍 books.json的绝对路径let filename path.join(__dirname, books.json);// 判断请求的是否是获取图书的接口if (method GET url /api/getbooks) {// 说明客户端请求的就是获取书籍的接口// 把所有书籍信息响应给客户端// 读取books.json里面的内容把读取的结果响应给客户端// 读取json文件可以直接使用 require let data require(filename);// console.log(data); // 得到一个数组res.writeHead(200, {Access-Control-Allow-Origin: *, // 解决跨域问题Content-Type: application/json; charsetutf-8});res.end(JSON.stringify({status: 200,msg: 获取图书成功,data: data}));} else if (method POST url /api/addbook) {// 说明请求的是添加图书的接口// console.log(111);// 1. 接收客户端提交的数据// 1.1 定义一个空字符串一会要把接收到的数据拼接到空字符串中let str ;// 1.2 注册req的data事件用于接收客户端提交的数据// 当接收到客户端的提交的数据的时候就会触发这个事件形参chunk就是接收到一部分数据req.on(data, (chunk) {str chunk;});// 1.3 注册req的end事件当完全接收到了客户端的数据之后会触发req.on(end, () {// console.log(str); // 完整的数据 // booknameaaaauthorbbbpublisherccc// 2. 保存到 books.json中let old require(filename); // 得到数组let newBook querystring.parse(str);newBook.id Date.now(); // 临时使用时间戳当做idold.push(newBook);fs.writeFile(filename, JSON.stringify(old), (err) {if (err) return console.log(err);// 没有错误保存成功// 3. 做出响应res.writeHead(200, {Access-Control-Allow-Origin: *, // 解决跨域问题Content-Type: application/json; charsetutf-8});res.end(JSON.stringify({status: 201,msg: 添加图书成功,}));});});} else {res.end(错误);// 说明客户端代码写错了。客户端请求了一个不存在的资源}
});npm初步使用
介绍
npmnode package managernode包管理器。
包是什么包就是模块。
npm这个工具在安装node的时候就已经安装到你的计算机中了。
命令行中执行 npm -v 如果看到版本号说明安装成功了。
作用
npm的作用是管理node模块的工具。
下载并安装第三方的模块卸载第三方模块发布模块删除已发布的模块…
第三方模块
非内置模块安装完node还不能使用的模块需要从网上下载安装才能使用的模块第三方模块是个人、公司、组织编写的模块发布到网上供我们使用 npm 就是一个管理下载安装、卸载…第三方模块的工具 初始化
使用npm工具之前必须先初始化。
npm init -y
# 或
npm init
# 然后一路回车初始化之后会在项目目录中生成 package.json 的文件。
什么第三方模块
非node自带的模块。
是别人写的模块然后发布到npm网站我们可以使用npm工具来下载安装别人写的模块。
第三方模块都是在node核心模块的基础之上封装了一下实现了很多非常方便快速简洁的方法。
目前npm网站收录了超过 150万个第三方模块。
安装卸载项目模块
下载安装第三方模块
npm install 模块名
npm i 模块名卸载模块
npm uninstall 模块名
npm un 模块名关于项目模块的说明
下载安装的模块存放在当前文件夹的 node_modules 文件夹中同时还会生成一个记录下载的文件 package-lock.json下载的模块在哪里可以使用 在当前文件夹在当前文件夹的子文件夹在当前文件夹的子文件夹的子文件夹… 怎样使用第三方模块 和使用内置模块一样需要使用 require 加载模块调用模块提供的方法完成工作一般好的模块都会用使用文档的
演示下载安装第三方模块:moment
这里演示一个处理时间日期的模块 – moment
下载安装moment模块
npm init -y
npm i moment演示使用moment模块处理时间
// 加载模块
const moment require(moment);console.log(moment().format(YYYY-MM-DD hh:mm:ss));
// 官网http://momentjs.cn全局模块 全局安装的模块不能通过 require() 加载使用。 全局安装的模块一般都是命令或者工具。 安装方法在安装模块的命令后面加 -g npm i 模块名 -g
# 或
npm i -g 模块名卸载方法也是多一个 -g npm un 模块名 -g全局安装的模块在系统盘C盘 通过命令 npm root -g 可以查看全局安装路径 mac安装过程可能出现权限问题可以使用 sudo npm i xxx -g 全局安装nodemon模块 安装命令 npm i nodemon -gnodemon的作用 代替node命令启动服务的当更改代码之后nodemon会自动帮我们重启服务。 运行nodemon如果报错如下 解决办法是 管理员方式打开命令行窗口执行 set-ExecutionPolicy RemoteSigned;在出现的选项中输入 A回车。即可
更改镜像源
镜像源就是下载安装第三方模块的网站。
我们下载的第三方模块都是从国外的npm主站下载的速度比较慢。
淘宝在国内对npm上的第三方模块做了一个备份也就是说我们可以从国内下载第三方模块。
除了淘宝之外还有很多其他镜像源。
简单的更改镜像源方法
全局安装 nrm 的模块npm i nrm -g nrm 用于管理镜像源 使用nrm nrm ls 通过这个命令可以查看可用的镜像源nrm use taobao 切换下载模块的网站为淘宝
注意 如果 nrm 安装失败请修改电脑的环境变量给环境变量添加上 npm 的绝对地址再次查询即可
查询版本
nrm - y 使用已下nmp 代码可以根据 package.json重新安装node_modules中的模块信息
npm i如果安装出现错误 1. 查看 npm 版本 2. 镜像源的配置