关于node.js中接口实现的初步学习

本文介绍如何使用Node.js的http模块创建服务器,通过处理GET和POST请求,实现动态和静态资源的响应。文章详细展示了如何利用fs、url和querystring模块处理文件读取、URL解析及查询字符串。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

node.js中有个http的模块 它可以开启一个服务器用

const http = require('http')//导入http模块
const fs = require('fs')//导入fs模块
const url = require('url')//导入url模块
const querystring = require('querystring')//导入querystring模块
const app= http.createServer((req,res)=>{
//这里创建一个服务器 里面有两个参数 第一个是请求request  第二个是响应response
    // console.log(req.url)//这个是获取请求的地址
    //首先排除 / favicon.ico的请求
   if(req.url.indexOf('/favicon.ico')===-1){
   //这里用字符串的方法indexof来判断请求地址里面是否有‘/favicon.ico’这个内容  
   //如果没有返回-1 所以if里面的条件为true的时候执行
      //排除玩上面的字符串然后判断是静态资源还是动态资源(api)
      //如果是api接口
      if(req.url.indexOf('/api')!==-1){
        //处理地址栏的数据  类似与get请求
        //用url.parse()方法把地址字符串变成地址对象 然后获取到他的 query 属性的值 也就是变量data的值 
        //url.parse的第二个参数如果不写则data 的值就是一个字符串 如果我们想要获取请求携带的参数,需要我们用 字符串的split方法去切割  
        //写上参数true 的时候自动会转化为对象
        let data = url.parse((req.url),true).query//得到地址栏上携带的参数
        console.log(data)
       
        //处理不在地址栏的数据 类似与post请求
        let noaddress = ''// 创建一个存放非地址栏参数的变量
        req.on('data',chunk=>{//chunk表示抓取的一片数据  data事件会频繁出触发
            noaddress+=chunk
        })
        req.on('end',()=>{
            console.log('非地址栏的数据',querystring.parse(noaddress))
            //最后把这个地址字符串转化为对象
            //这里我们的到的noaddress是一个参数的字符串并非是一个地址
            //所以不能用url.parse进行解析
            //所以要用到querystring模块的方法
            //把这个参数的字符串用 qeurystring.parse()方法转化为一个对象
        })


      }else{//静态资源
       try {
           let path = req.url==='/' ? './index.html' : req.url
           //这里用三目运算符 如果请求的req.url 为 ‘/’ 则直接请求首页
           //如果不是则请求req.url的值
            // res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'})  //设置请求头
            // res.write('你好世界')这里直接写入内容  如果是中文 则需要进行设置请求头的格式 不然会出现中文乱码
            let data =  fs.readFileSync(path)//如果直接用fs模块的这个方法同步去读这个路径则不用设置格式 把读出的内容赋值给一个变量
            res.write(data)//将data返回浏览器渲染出来
       } catch (error) {
           let data = fs.readFileSync('./html/hello.html')//如果请求的地址出现错误则直接让他去读一个错误的页面
           res.write(data)
       }
      }

   }
    res.end()//结束请求  不然浏览器会一直请求
})
app.listen(5000)//设置监听的端口号  不写域名 默认为localhost
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值