【目录】
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协议与服务器相关推荐

  1. NodeJS学习笔记(四) events,util模块

    开发指南中讲到的node核心模块有events,util,fs,http.介于篇幅的原因,在这里我想分两个次总结笔记. Events模块 Events是node最重要的模块.Nodejs本身架构就是基 ...

  2. nodejs学习笔记-用http模块开启服务器端口

    服务端代码: javascript// 引入nodejs中的http模块 var http = require('http');// 创建createServer方法用于接受http客户端请求及返回响 ...

  3. 直播技术学习笔记(直播协议+流媒体服务器+音视频处理+FFmpeg)

    直播协议 RTMP(Real Time Messaging Protocol) 简介 Time Messaging Protocol,实时消息传送协议 RTMP是Adobe公司为Flash播放器和服务 ...

  4. Nodejs学习笔记(七)——接口API

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http ...

  5. Nodejs学习笔记(六)——Mysql模块

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http ...

  6. Nodejs学习笔记(二)——模块

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记( ...

  7. Nodejs学习笔记(一)——基础之全局对象、包和npm

    [目录] Nodejs学习笔记(二)--模块 Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记(五)--express ...

  8. Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)

    Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...

  9. 【http学习笔记四】安全篇

    [http学习笔记四]安全篇 文章目录 [http学习笔记四]安全篇 一.HTTPS 与 SSL/TLS ① 什么是安全? 机密性 完整性 身份认证 不可否认 ② 什么是HTTPS? ③ SSL/TL ...

最新文章

  1. 文件压缩和文件打包命令
  2. php分享表单提交到本页的实例
  3. SAP R3 Create Client: T-code:SCC4
  4. 58 第一个工程项目(Celery)
  5. java中删除字符串的头尾空白符。
  6. java调试案例_Spring-boot的debug调试代码实例
  7. Debian安装软件是Debian GNU/Linux 5.0.4 _Lenny_ - Official amd64 DVD Binary-1 20100131-22:09
  8. .Net消息队列学习(一)
  9. PAT乙级 1003
  10. 【备忘】conda环境常用配置命令
  11. ECshop生态全面开放,城市合伙人招募火热启动
  12. C Primer Plus第三章总结
  13. 【外刊阅读】1. There is no “gay gene“
  14. android 四大组件,安卓四大组件及其作用
  15. 对于8086cpu的探索发现
  16. linux 64 输入法下载,搜狗输入法 for Linux
  17. 工作感想——离开公司
  18. 战国七雄中最强大的国家(除秦外)——赵国_我是亲民_新浪博客
  19. python 开放端口探测工具
  20. Qt编写安防视频监控系统46-视频存储

热门文章

  1. 关于http协议的理解
  2. Javascript事件机制兼容性解决方案
  3. php与ajax交互中文乱码(字符串转化)
  4. SpatiaLite空间索引(一)
  5. (转)深入理解Javascript闭包(closure)
  6. mysql 5.5.42,mysql-5.1.42安装完成后,出现如下错误的解决办法
  7. Dart 10-Day
  8. 对计算器软件的测试报告,Win7计算器软件测试报告.doc
  9. 插值法补齐缺失数据_数据挖掘非常重要的一步:数据预处理
  10. C++学习随笔之一:基础