我的第一个web服务器

// 创建web服务器


//引用系统模块
const http = require('http') //用于创建网站服务器的模块
//创建web服务器
const app = http.createServer(); //app就是网站服务器对象
//当客户端发送请求时
app.on('request', (req, res) => {
    // 获取输出请求方式
    console.log(req.method);
    // 获取输出请求报文信息
    console.log(req.headers);
    //获取输出请求地址
    console.log(req.url)


    res.end('<h1>hi user</h1>')
    // // res.writeHead(http状态码,{
    //     'content-type':'内容类型'  text/plain
    // })
    // 内容类型:text/plain
                // text/html
                //text/css 等等
    res.writeHead(200,{
        'content-type':'text/html:charset = utf8'
    })
})
//监听3000端口
app.listen(3000);
console.log('服务器已经启动,监听3000端口,请访问localhost:3000');


// HTTP协议即超文本传输协议
// 概念:客户端与服务端沟通的规范
// 报文 :请求报文 
    //   响应报文:
    // HTTP状态码 200请求成功 404 请求资源没找到 500服务端错误 400客户端请求语法错误
// 请求方式:1.get 请求数据
//          2.post 发送数据
   


//  GET请求参数 被放在浏览器地址栏中 ?之后的参数  可通过req.url获取
// 获取GET请求参数:
const url = require('url')//用于处理url地址 一般用于登录信息的简短获取
// url下的prase()方法
url.parse(req.url)//返回解析后的对象 包含很多属性 比如query 包含地址参数解析后对象形式 pathname 表示?之前的url地址
url.parse(req.url,true)//第一个参数是要解析的地址 第二个参数是布尔值 代表是否将查询参数解析成对象形式
url.parse(req.url,true).query//地址解析后的对象 将?后的参数分别以属性属性值存放
// let params = url.parse(req.url,true).query
// params.属性名 代表解析后的参数
// 比如 params.age=...



// POST请求参数 在请求报文中 
// 引用系统模块
const http = require('http') //用于创建网站服务器的模块
//创建web服务器
const app = http.createServer(); //app就是网站服务器对象
const querystring = require('querystring')//处理请求参数模块
//当客户端发送请求时
app.on('request', (req, res) => {
    //接收post参数 post参数是通过事件方式接收 data事件和end事件 且可能不是一次性接收完毕
    //   data当请求参数传递时触发data事件
    //   end 当参数传递完成时触发end事件
  let postParams= '';
    req.on('data', params => {
    postParams +=  params;
    })

    req.on('end', () => {
 console.log(postParams);//输出请求参数
 console.log(querystring.parse(postParams));//输出转换后的请求参数格式 以对象形式输出
 
 
    })
    res.end('ok')//服务端发出响应 表示接收到了请求参数 响应终止客户端的等待
})
//监听3000端口
app.listen(3000);
console.log('服务器,监听3000端口,请访问localhost:3000');
 
  
 
 

猜你喜欢

转载自www.cnblogs.com/treasurea/p/11246675.html