nodejs入门学习第三天

1-了解端口
  • 一台电脑可以部署多个服务器,例如:
    • Apache软件部署的服务器
    • 我们自己用http模块搭建的服务器
    • mysql数据库服务器
  • 之后我们就能通过ip地址来找到这个电脑(localhost或者127.0.0.1)
  • 通过端口来找到不同的服务器

注意:

  • 默认的http端口号是80端口,所有Apache配置这个web服务器同的就是80端口
  • 默认的80端口可以不写
  • 服务器端口不能乱写,很多端口已经被其他的服务器给占用了
2-web服务器读取网页返回给用户
//1.导入模块
const fs = require("fs")
const path = require("path")
const http = require("http")

//2.创建服务器
const server = http.createServer((requext, response) => {
    //3.读文件
    //3.1拼接读取文件的路径
    const fullPath = path.join(__dirname, "web", "index1.html")
    //3.2读取文件内容
    fs.readFile(fullPath, "utf8", (err, data) => {
        if (err == null) {
            //读取成功后返回给用户页面
            response.end(data)
        } else {
            response.end("404")
        }
    })
})
//4.开启服务器
server.listen(4399, () => {
    console.log("成功")
})
3-实现静态资源服务器
//实现静态资源服务器
//要求:用户访问什么资源就返回什么资源,没有找到就返回404

//1.导入模块
const fs = require("fs")
const path = require("path")
const http = require("http")
//2.创建服务器
const server = http.createServer((request, response) => {
    //3.设置返回给用户的内容
    //3.1首先要知道用户请求的是哪个页面
    //requext是请求,里面有你要请求的资源名字

    //3.2 拼接要读取的文件的路径
    const fullPath = path.join(__dirname, "web", request.url)
    //3.3 读文件
    fs.readFile(fullPath, (err, data) => {
        if (err == null) {
            response.end(data)
        } else {
            response.end("404")
        }
    })

})

//4.开启服务器
server.listen(4399, () => {
    console.log("成功")
})
04-nodejs接收get或post传递的参数
/**
 * 前端传参:
 *      get传参:拼接在url上面
 *                  http://127.0.0.1:4399/joke?id=&&username=admin
 *      post传参:不是拼接在url上面
 *                  在请求体重传递
 */

//写一个服务器(后端接口)
//1.导入模块
const http = require("http")
const fs = require("fs")
const path = require("path")
const url = require("url")
//2.创建服务器
const server = http.createServer((req, res) => {
    //req是请求的对象,req.url能拿到请求的url中?以及?后面的内容
    console.log(req.url)
    //可以拿到通过req.url传递的参数
    //但是要做字符串的处理(不适合),可以直接用url模块来处理
    //url.parse()方法接收一个字符串,解析,然后返回一个url对象
    //第一个参数:要处理的url
    //第二个参数:如果是true的话就返回一个对象
    //这个对象中有一个query属性,他也是一个对象,这个属性里面有get传递的参数
    //那就可以根据这个接收的到id,去数据库中获取这个id对应的所有信息,返回给调用者
    let = urlObj = url.parse(req.url, true)
    console.log(urlObj)
    console.log(urlObj.query)
    res.end(JSON.stringify(urlObj.query)) //只能返回字符串
})

//3.开启服务器
server.listen(4399, () => {
    console.log("成功开启")
})
/**
 * 前端传参:
 *      get传参:拼接在url上面
 *                  http://127.0.0.1:4399/joke?id=&&username=admin
 *      post传参:不是拼接在url上面
 *                  在请求体重传递
 */

/**
 * get数据是存在url中的,相对较小,req.url拿到
 * post数据是存在请求体中的,相对而言较大,那传给后端的话,就不会一次全传过去,他会把数据分割成多个小块,一块一块的传
 * 后端一块一块的接收
 * 1.首先要有个容器
 * 2.给req对象一个data事件(这个事件会执行很多次)这个事件会把小块的数据拼接起来
 * 3.给req对象一个end事件(只会执行一次)表示数据传递完了
 * 4.处理传递过来的数据,queryString.parse()
 */
//1.导入模块
const http = require("http")
const querystring = require("querystring")

//2.创建服务器
const server = http.createServer((req, res) => {
    // console.log(req.url)
    //req是请求对象
    //因为这里是post方式传递的参数,不是在url中的,所有用req.url不行
    //1.要有个容器
    //2.给req对象一个data事件
    //3.给req对象一个end事件
    let postData = ""; //容器
    req.on("data", (chunk) => {
        postData += chunk
    }) //给data事件,事件处理程序,参数是当前这次传递的一块内容
    req.on("end", () => {
        // console.log(postData)//username=admin&postword=123456
        //解析这个传递的postData
        //用queryString
        let postObj = querystring.parse(postData)
        console.log(postObj) //{username:'admin',postword:'123456'}
        //就可以拿到处理后的数据去数据库对比
    }) //表示事件处理完毕,

    res.end("aaa")
})
//3.开启服务器
server.listen(4399, () => {
    console.log("成功开启")
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值