nodejs-http、url、express、nodemon的作用及使用方法

fs

fileSystem 文件系统,主要用来操作本地文件

第三方模块

  • axios,用来发起网络请求
  • cheerio,用来解析 html 字符串

http

http 模块可以用来创建一个 web 服务器

const http = require('http') // 引入http
http.createServer(...) // 创建一个服务器
// console.log("1111");
const http = require("http");
const fs = require("fs");

// 创建一个web服务器,监听3333端口
//  req request   请求,客户端向服务器发起
//  res response  相应,服务器返回客户端
http
  .createServer((req, res) => {
    console.log(req.method);
    console.log(req.url);
    console.log(req.headers);

    // if (req.url == "/index.html") {
    //   res.setHeader("Content-Type", "text/html;charset=utf-8"); // 设置请求头
    //   // res.end("你请求的是index.html");
    //   const strHtml = fs.readFileSync("./public/index.html").toString();
    //   res.end(strHtml);
    // } else {
    //   res.end("hello world"); // 输出内容
    // }
    res.setHeader("Content-Type", "text/html;charset=utf-8");
    // 创建了一个静态服务器,可以用来解析html等静态文件
    if (req.url == "/" || req.url == "/favicon.ico") {
      res.end("hello world");
    } else {
      try {
        const strHtml = fs.readFileSync("./public" + req.url).toString();
        res.end(strHtml);
      } catch (err) {
        res.statusCode = 404; // 设置404状态码
        res.end("404");
      }
    }
  })
  .listen(3333);

url

用来解析 url 字符串

const url = require("url");
let strUrl = "http://localhost:3000/api/v1/users?id=8&b=9";

// url.parse 格式化url数据
//  第二个参数为bool值,为true的时候表示把query格式化为一个对象{id: 8, b: 9}
//    为false时query为id=8&b=9
const urlData = url.parse(strUrl, true);
console.log(urlData);
// protocol 协议 http,https
// host 	主机名,包含主机和端口号
// hostname 主机,只有主机名字
// port		端口号
// query	url中的条件,不包含?
// search	url中的条件,包含?
// pathname	路径
// path		完整的路由包含查询条件
// href		带有协议域名端口号的完整地址
const url = require("url");
let strUrl = "http://localhost:3000/api/v1/users?id=8&b=9";

// url.parse 格式化url数据
//  第二个参数为bool值,为true的时候表示把query格式化为一个对象{id: 8, b: 9}
//    为false时query为id=8&b=9
const urlData = url.parse(strUrl, true);
console.log(urlData);

express

nodejs 中的一个 web 开发框架,可以使用 nodejs 搭建一个 web 系统

npm i express # 安装模块

# 用于快速结束没有任何数据的响应,使用res.end()。
# 响应中要发送JSON响应,使用res.json()。
# 响应中要发送数据,使用res.send() ,但要注意header ‘content-type’参数。
# 如果使用res.end()返回数据非常影响性能。

在这里插入图片描述
在这里插入图片描述

使用
const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send("hello express!!"); // 输出
});

app.listen(3333, () => {
  console.log("服务器运行在3333端口");
});

demo1

const express = require("express");
const app = express();

// axios发送请求的时候content-type默认为application/json,传递的数据是json格式的
// jquery发送请求的时候content-type为url编码的,传递的数据是一个类似于:a=值&b=值2
// 所以,当页面使用的是jQuery时,
// 需要app.use(express.urlencoded());来获取请求体中使用了url编码的数据,否则增添的数据不会出来,只会有id。
app.use(express.urlencoded());
//如果前面的页面外部导入的是axios,
// 需要app.use(express.json());

// 任何一个web服务器默认的入口文件叫index.html
app.use("/", express.static("./public")); // 把public文件夹下的文件当做静态资源进行访问

// 参数一表示请求的地址
// 参数二表示请求的处理函数
// .get表示发起get请求
// .post  delete put patch
app.get("/", (req, res) => {
  res.send("战斗吧,暴龙兽!"); // 输出一个字符串
});

app.get("/api/v1/pets", (req, res) => {
  // 从文件中读取数据进行展示
  res.json([{
      id: 1,
      name: "暴龙兽",
    },
    {
      id: 2,
      name: "天使兽",
    },
    {
      id: 3,
      name: "皮卡丘",
    },
    {
      id: 4,
      name: "小白",
    },
    {
      id: 5,
      name: "xxx",
    },
  ]); // 输出一个json数据
});

app.post("/api/v1/pets", (req, res) => {
  // 把当前客户端传递的数据存储在文件里
  res.json({
    code: 1,
    msg: "保存数据成功",
    data: req.body, // req.body可以获取当前请求体中的数据
  });
});

app.listen(3333, () => {
  console.log("服务器运行在3333端口");
});
<h1>宠物列表</h1>
    <ul class="list"></ul>
    <form action="/api/v1/pets" method="post">
        <input type="text" name="name" placeholder="请输入名字">
        <input type="text" name="skills" placeholder="请输入技能">
        <input type="submit" placeholder="提交">
    </form>
    <!--使用axios-->
    <!--<script src="https://cdn.bootcdn.net/ajax/libs/axios/0.19.2/axios.min.js"></script>-->
    <!--使用jQuery-->
    <script src="https://cdn.bootcdn.net/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script>
        $.ajax({
            type: "get",
            url: "/api/v1/pets",
            success: function (response) {
                let strHtml = '';
                response.forEach(item => strHtml += `<li>${item.name}</li>`);
                $('.list').html(strHtml);
            }
        });
    </script>

demo2

nodemon

是一个 js 插件,可以让我们在修改代码之后自动进行服务器的重启操作

npm i nodemon -g # 全局安装nodemon
npm i nodemon
nodemon xx # 启动你的js文件
数组中常见的方法
  • forEach
  • map
  • reduce
  • push
  • pop
  • shift
  • unshift
  • sort
  • find
  • findIndex
  • filter
  • splice
  • concat
  • indexOf

请求报文

mongodb

数据库

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值