nodejs http模块

    xiaoxiao2021-04-14  74

    nodejs http模块

    搭建一个简单的服务器 在搭建之前 需要知道的是http 的request和response 对象的基本参数 一、request

    request.url: 获取到请求地址request.headers: 获取到客户端请求的(http请求)头部信息request.method: 获取到客户端请求的方式(get/post/…..)request.httpVersion http的版本

    二 、response

    res.writeHead(200,{‘Content-type’:’text/html’,’content-length’:’100’});设置状态码和 MIME类型res.statusCode = 200;//(设置zhuan)优先级比writeHead低res.setHeader(‘content-type’,’text/html’);//优先级低于writeHead; res.setEncoding(‘utf-8’);//设置服务端获取数据的编码res.write(chunk,”utf-8”); 返回的数据,默认是 utf-8res.on(‘data’,function(chunk){});//监听data事件 读取数据一般在接收文件时使用res.on(‘end’,function(){});//监听end,数据执行完毕 执行end res.on(‘error’,function(){});//读取文件出错触发此事件

    接下来是解析get和post请求的URL

    get 方式 使用的是url模块 var url = require('url'); var urls = url.parse(req.url,true); var name = url.query.name; post 方式 最简单的做法是 传入json 然后使用JSON.parse(); console.log(postData); postData = JSON.parse(postData.toString()); console.log(postData.name);

    全部代码(http.js):

    const http = require("http"); const fs = require("fs"); const url = require("url"); const queryString = require("querystring"); var create = function (req, res) { res.statusCode = 200;//返回200状态码 //res.setHeader("Content-Type",'text/plain') //text/plain 表示的是文字 res.setHeader('content-type', 'text/html;charset=utf-8'); var urlss = url.parse(req.url, true); var postData = []; if (req.method == "POST") { console.log("this is post method"); req.on("data", function (chunk) { postData += chunk; }); req.on("end", function () { // var data = Buffer.concat(postData).toString(),ret; try { //var ret = JSON.parse(data); // console.log(ret); } catch (err) { console.log(err); } console.log(postData); postData = JSON.parse(postData.toString()); // postData = queryString.parse(postData); console.log(postData.name); }) } else { console.log(urlss); console.log(urlss.query.name); } if (req.url !== '/favicon.ico') { let out = fs.createWriteStream("./log.txt");//创建一个写入流 out.write(`请求方法:${req.method} \n`); out.write(`请求url:${req.url} \n`); out.write(`请求url参数Name:${url.toString()},pwd:${url.pwd} \n`); //第一个参数表示要转换为json的string字符串 ,第二个参数表示的是是否过滤包含在req.headers中的参数, //第三个参数仅仅是为了提高结果的可读性 插入多少个空白字符到过滤之后的json对象中,最大设置为 10 out.write(`请求头对象:${JSON.stringify(req.headers, null, 1)}`); out.write(`请求http版本:${req.httpVersion}`); res.write("<h1>标题这是</h1>"); res.end("hello world "); } //第一个参数是 连接状态码,第二个是mimi类型 //res.writeHead(200,{'Content-type':'text/html','content-length':'100'}) } http.createServer(create).listen(12345, () => { console.log("listen success") });
    转载请注明原文地址: https://ju.6miu.com/read-669630.html

    最新回复(0)