Nodejs学习笔记(四)——http协议与服务器
【目录】
Nodejs学习笔记(一)——基础之全局对象、包和npm
Nodejs学习笔记(二)——模块
Nodejs学习笔记(三)——同步和与异步之文件系统模块
Nodejs学习笔记(五)——express框架、路由(器)及中间件
Nodejs学习笔记(六)——Mysql模块
Nodejs学习笔记(七)——接口API
文章目录
- 一、http协议
- 二、服务器
- 1.获取请求的资源url和方法
- 2.设置相应的状态码和头信息(对象形式)
- 示例一:
一、http协议
浏览器和WEB服务器之间的通信协议
(1)通用头信息
Request URL:请求的URL,表示要请求的服务器端资源
Request Method:请求的方法,对资源的操作方式 get/post…
Status Code:响应的状态码
1**:服务器端接收到了请求,还没有做出响应
2**:成功的响应
3**:响应的重定向,跳转到另一个URL
4**:客户端请求错误
5**:服务器端错误
(2)响应头信息(response)
Content-Type:设置响应的内容类型
解决中文乱码 text/html;charset=utf-8
Location:设置响应的重定向中要跳转的URL
(3)请求头信息(request)
(4)请求主体
可有有无,如果有数据传递才会出现
二、服务器
首先引入http模块,并且创建一个服务器,设置端口。
三行搞定服务器:
//引入http模块
const http = require('http');//创建web服务器
const app = http.createServer();//设置端口1~65535
app.listen(8080);
通过下面两种方式访问服务器:
http://127.0.0.1:8080
http://localhost:8080
添加事件,接收浏览器请求,并作出响应
一旦浏览器请求,就会触发事件,调用回调函数
req 请求的对象
req.url 获取请求的URL,格式为 ‘/jianbing’ ‘/youtiao’
req.method 获取请求的方法res 响应的对象
res.write() 设置响应的内容
res.writeHead() 设置响应的状态码和头信息
res.end() 结束并发送
app.on('request', (req, res) => {console.log('有一个用户进来!');
})
这时node 文件后,无响应或闪退表示服务器创建成功:
输入网址localhost:8080,并重新刷新一遍,图标一直在转为正常。
console就会出现“有一个用户进来!”
输入ctrl+c服务器就会断开
1.获取请求的资源url和方法
app.on('request', (req, res) => {//获取请求的资源url和方法console.log(req.url, req.method);
})
2.设置相应的状态码和头信息(对象形式)
设置状态码200:
app.on('request', (req, res) => {res.writeHead(200, {'Content-Type':"text/html;charset=utf-8"//解决中文乱码});//设置响应到浏览器的内容res.write('这是你的cite');//结束并发送res.end();
})
显示响应到浏览器的内容:
设置状态码302:重定向地址
app.on('request', (req, res) => {//设置相应的状态码302,设置跳转的URL。res.writeHead(302, {Location:'https://blog.csdn.net/qq_29493173?spm=1000.2115.3001.5113'});res.end();
})
跳转到指定url:
设置状态码404
app.on('request', (req, res) => {res.writeHead(404);res.write('Not Found');res.end();
})
示例一:
创建web服务器,设置端口8080,添加事件,根据请求作出响应:
- ‘/list’ 响应 ‘这是商品列表’
- ‘/index’ 响应文件’1.html’,先读取文件,然后把读取的内容作为响应的内容
- ‘/study’ 跳转到 http://www.tmoo.cn
- 其它 响应状态码404 not found
思路:/list、/index、/study都是req.url,所以只要用if判断一下req.url是什么,并使用不同状态码和头信息作出对应的响应即可
server.js:
const http = require('http');
const fs = require('fs');const app = http.createServer();
app.listen(8080);app.on('request', (req, res) => {if (req.url == '/list') { res.writeHead(200, {'Content-Type':"text/html;charset=utf-8"});//设置响应到浏览器的内容res.write('这是商品列表');res.end();} else if (req.url == '/index') {let data = fs.readFileSync('./index.html');res.write(data.toString());res.end();} else if (req.url == '/study') {//设置相应的状态码302,设置跳转的URL。res.writeHead(302, {Location:'http://www.tmooc.cn/'});res.end();} else {res.writeHead(404);res.write('not found');res.end();}
})
index.html:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body><p>this is index.html 的内容</p>
</body>
</html>
Nodejs学习笔记(四)——http协议与服务器相关推荐
- NodeJS学习笔记(四) events,util模块
开发指南中讲到的node核心模块有events,util,fs,http.介于篇幅的原因,在这里我想分两个次总结笔记. Events模块 Events是node最重要的模块.Nodejs本身架构就是基 ...
- nodejs学习笔记-用http模块开启服务器端口
服务端代码: javascript// 引入nodejs中的http模块 var http = require('http');// 创建createServer方法用于接受http客户端请求及返回响 ...
- 直播技术学习笔记(直播协议+流媒体服务器+音视频处理+FFmpeg)
直播协议 RTMP(Real Time Messaging Protocol) 简介 Time Messaging Protocol,实时消息传送协议 RTMP是Adobe公司为Flash播放器和服务 ...
- Nodejs学习笔记(七)——接口API
[目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http ...
- Nodejs学习笔记(六)——Mysql模块
[目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http ...
- Nodejs学习笔记(二)——模块
[目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记( ...
- Nodejs学习笔记(一)——基础之全局对象、包和npm
[目录] Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记(五)--express ...
- Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...
- 【http学习笔记四】安全篇
[http学习笔记四]安全篇 文章目录 [http学习笔记四]安全篇 一.HTTPS 与 SSL/TLS ① 什么是安全? 机密性 完整性 身份认证 不可否认 ② 什么是HTTPS? ③ SSL/TL ...
最新文章
- 文件压缩和文件打包命令
- php分享表单提交到本页的实例
- SAP R3 Create Client: T-code:SCC4
- 58 第一个工程项目(Celery)
- java中删除字符串的头尾空白符。
- java调试案例_Spring-boot的debug调试代码实例
- Debian安装软件是Debian GNU/Linux 5.0.4 _Lenny_ - Official amd64 DVD Binary-1 20100131-22:09
- .Net消息队列学习(一)
- PAT乙级 1003
- 【备忘】conda环境常用配置命令
- ECshop生态全面开放,城市合伙人招募火热启动
- C Primer Plus第三章总结
- 【外刊阅读】1. There is no “gay gene“
- android 四大组件,安卓四大组件及其作用
- 对于8086cpu的探索发现
- linux 64 输入法下载,搜狗输入法 for Linux
- 工作感想——离开公司
- 战国七雄中最强大的国家(除秦外)——赵国_我是亲民_新浪博客
- python 开放端口探测工具
- Qt编写安防视频监控系统46-视频存储