NodeJs(day04)

复习

练习:
2.1 创建 web 服务器, 监听端口 8080, 接收浏览器的请求, 根据请求做出不同的响应
/login 响应内容 this is login page
/reg 响应内容 this is reg page
/study 跳转 http://www.163.com0

fs 模块
stat/mkdir/rmdir/readdir/wirteFile/appendFile/readFile
unlink/createReadStream/createWriteStream

http 协议
通用的头信息: 请求头/请求URL/响应状态码
响应头信息: 文件类型/压缩类型gzip/
请求头信息
请求主体

http 模块
模拟浏览器/发请求、

  http.get(url, function(response) {
    response.on("data", function(chunk) { });
  })
  • 创建 web 服务器

  let app = http.createServer();
  app.listen(8080);
  app.on("request", function(request, response) {
    // request.url/method/headers
    // response.write/writeHead(302, {})/end()
  });

压缩

  1. 使用 zlib 模块对服务器端响应压缩
  //1.1 引入 zlib 模块
  const zlib = require("zlib");
  //1.2 内容压缩形式
  "Content-Encoding": "gizp"
  //1.3 创建 gzip 压缩
  let gzip = zlib.createGzip();
  //1.4 使用读取流读取文件并响应到浏览器
  fs.createReadStream("tmooc.html").
  pipe(gzip).
  pipe(response);

express

基于 nodejs 平台,快速、开放、极简的 web 开发框架
www.expressjs.com.cn
安装 express
npm install express

  • 创建 web 服务器
  //引入 express 模块
  const express = require("express");
  //创建 web 服务器
  let app = express();
  //监听端口
  app.listen(8080);

(1) 路由
浏览器向web服务器发请求, web服务器根据 请求的url 和 请求的方法 做出响应
三要素: 请求的 url, 请求的方法, 响应(回调函数)
response 响应对象
send() 设置并发送响应的内容, 路由中只能使用一次
sendFile() 响应文件, 要求使用绝对路径 __dirname
redirect() 响应的重定向, 跳转到另一个 url

request 请求对象
  method 请求的方法
  url 请求的url
  headers 请求的头信息

  query 获取请求的查询字符串, 格式为对象
  params 获取路由传递的参数
  ```javascript
    //设置路由中接收数据的名称
    app.get("/shopping/:price", function(request, reponse) {
      request.params; //获取传递的数据, 格式为对象
    });
    //浏览器传递数据
    //http://127.0.0.1:8080/shopping/4999
  ```

  练习: 创建路由, 请求方法: get 请求 url:/admin 
  传递用户名(uname)和密码(upwd), 接收传递数据, 并响应到浏览器中

  练习:使用 express 来创建 web 服务器, 创建路由, 请求方法: get, 请求url: /login, 响应一个文件 login.html 到浏览器端

  - 获取 post 请求的数据
  ```javascript
    request.on("data", function(data) {//通过事件
      data.toString //格式为字符串, 需要解析为 对象
    });
  ```

- GET 和 POST 请求
  在浏览器的地址栏输入 url, 默认就是 GET 请求, 传递数据使用查询字符串, 浏览器记录可能被浏览器缓存

  POST 请求需要使用表单提交来完成(现阶段), 获取数据使用使事件

模块
  商品模块 product
       列表             删除             修改
    product/list  product/delete  product/updata
  用户模块 user
    列表         删除           修改
   user/list  user/delete  user/updata

(2)路由器
路由在使用的过程中, 不同模块下路由可能出现相同的 url;
把同一个模块下的路由, 放到特定的路由器下来防止这种 url 重复

1. 创建路由器
```javascript
  const express = require("express");
  //1. 创建路由器对象
  let router = express.Router();
  //2. 向路由器中添加路由
  router.get("/list", function(request, response) {
    response.send("这是用户列表");
  });
  //3. 导出路由器对象
  module.exports = router;
```
2. 在 web 服务器中使用
```javascript
  const express = require("express");
  //1. 引入路由器模块
  const userRouter = require("./04_user");
  //2. 使用路由器, 挂载到特定的 url
  app.use("/user", userRouter);
```

课后任务

  1. 整理思维导图
  2. 练习: 创建 web 服务器, 创建一个商品路由器, 添加路由, 挂载到 /product
  3. 复习 mysql 的 SQL 语句
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值