NODE笔记 1 http模块

简单的http模块使用

文章目录


前言

node 提供了 http 模块,首先需要简单的介绍http

http协议(超文本传输协议),在web和网络领域都十分重要。在客户-服务通讯的请求响应中,报文大都是基于http。


可以先新建一个简单的js文件,引入http模块,保存demo后,进入控制台,输入 node 文件名.js 后,打开网址即可进行调试学习。终止该服务可以在cmd界面按 Ctrl+C。

一、http模块 简单使用

0.基础用法

写入简单的js文件保存,demo如下:

javascript 复制代码
var http = require('http') ;
const { type } = require('os');

var httpServer = http.createServer((request,response)=>{
    response.setHeader("content-type","text/html;charset=utf-8")
    response.write('\r\n this is 9012 httpdemo02 program ,中文测试 \r\n');
    response.end('\r\n http Server End ') ;
});

httpServer.listen('9012',()=>{ 
    console.log('\r\n server is listen 9012 port  ');
});

结果如下:

response.setHeader('content-type','text/html;charset=utf-8'); 设置响应头可以正常显示中文

更新代码需要先在终端终止该服务,再启动该服务。响应体含有中文,需要设置响应头 。同时,代码中的 \r\n 并未起到换行效果。

1.获取请求信息

http模块的 创建服务模块中的创建服务的回调函数参数中的request和response分部表示请求和响应。可以在node中接收请求信息。代码如下:

javascript 复制代码
const http = require('http') ;

var httpServer = http.createServer((request,response)=>{
    let {url,method} = request ;
    response.setHeader("content-type","text/html;charset=utf-8");
    response.write(request.url+"<---url---method->");
    response.write(request.method);
    response.end('   Server node demo03 end');
}) ;

httpServer.listen('9013',()=>{console.log("port 9013 listen ");
});

效果如图:
关于路径:如果访问网站的时候,只填写了IP地址或者是地域名信息,此时请求的路径为 /

关于favicon.ico:这个请求是属于浏览器自动发送的请求

URL仅支持路径和查询参数,method默认为GET ,其他参数如下 :

|----------|-----------------------------------------------|
| 含义 | 语法内容 |
| 请求方法 | request.method |
| 请求路径 | request.url |
| 请求头 | request.headers |
| URL路径 | require('url').parse(request.url).pathname; |
| URL字符串查询 | require('url').parse(request.url,TRUE).query; |

注意事项:

1.request.url只能获取路径以及查询字符串,无法获取URL中的域名以及协议的内容

2.request.headers将请求信息转化成一个对象,并将属性名都转化成了「小写」

二、 http模块练习

0. 使用https模块向接口发送并请求接收数据

java 复制代码
const https = require('https') ;
 
let fs = require('fs');
 https.get('https://XXXXX.XXXXX.cn/api', function (res) {
     var json = '';
    res.on('data', function (d) {
        json += d;
       
    });

    res.on('end',function(){
        //获取到的数据
        json = JSON.parse(json);

        // console.log(json.list) ;
        var jsonListData = json.list ;
        let ws = fs.createWriteStream('E:\\nodePra\\infor.txt');
        for(var index=0;index<jsonListData.length;index++){
            // ws.write(index+"--------"+"\r\n"  ) ;
  ws.write(jsonListData[index].unicode+"\r\n") ;
  ws.write(jsonListData[index].name+"\r\n") ;
  ws.write(jsonListData[index].mobile+"\r\n") ;
  ws.write(jsonListData[index].field_6321+"\r\n") ;
    ws.write(jsonListData[index].field_6698+"\r\n") ;
    ws.write(jsonListData[index].field_9073+"\r\n") ;
    ws.write(jsonListData[index].field_9567+"\r\n") ;
   ws.write(jsonListData[index].field_8156+"\r\n") ;
    ws.write(jsonListData[index].field_5028+"\r\n") ;
   ws.write(jsonListData[index].field_4156+"\r\n") ;
    ws.write(jsonListData[index].field_6281+"\r\n") ;
   ws.write(jsonListData[index].field_9997+"\r\n") ;
    ws.write(jsonListData[index].field_1486+"\r\n") ;
   ws.write(jsonListData[index].field_5396+"\r\n") ;
  
            ws.write(jsonListData[index].signin_time+"\r\n"+"\r\n"  ) ;
        }
        ws.end ;
        console.log("json.list") ;
    });
}).on('error', function (e) {
    console.error(e);

});

在以上代码中隐藏了接口的域名信息,将接口响应的数据写入到了指定的infor.txt文件中。http和https的请求模块差不多,但是实际中https用的多一些。

1.引入库

代码如下(示例):

c 复制代码
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.基础补充

代码如下(示例):

c 复制代码
data = pd.read_csv(
    'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

该处使用的url网络请求的数据。


总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

相关推荐
冷眼看人间恩怨2 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
Hejjon7 小时前
SpringBoot 整合 SQLite 数据库
笔记
西洼工作室10 小时前
【java 正则表达式 笔记】
java·笔记·正则表达式
初学者7.10 小时前
Webpack学习笔记(2)
笔记·学习·webpack
新手上路狂踩坑11 小时前
Android Studio的笔记--BusyBox相关
android·linux·笔记·android studio·busybox
stm 学习ing13 小时前
HDLBits训练3
c语言·经验分享·笔记·算法·fpga·eda·verilog hdl
尘觉13 小时前
算法的学习笔记—扑克牌顺子(牛客JZ61)
数据结构·笔记·学习·算法
bohu8313 小时前
sentinel学习笔记1-为什么需要服务降级
笔记·学习·sentinel·滑动窗口
初学者7.14 小时前
Webpack学习笔记(3)
笔记·学习·webpack
bohu8315 小时前
sentinel学习笔记5-资源指标数据统计
笔记·sentinel·statisticslot