博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
node web模块 (服务器端和客户端)
阅读量:5751 次
发布时间:2019-06-18

本文共 3753 字,大约阅读时间需要 12 分钟。

node web模块

web服务器

web服务器指网站服务器,指驻留在因特网上的某种程序,web浏览器的基本功能,提供信息浏览服务

web支持服务器端的脚本语言,通过脚本语言从数据库获取数据,将结果返回给客户端浏览器

web应用基本架构

Client => Server => Business => DataClient 即客户端,通过http协议向服务器发起请求Server 服务器端,指web服务器,接收客户端请求,并向客户端发送响应的数据Business 即业务层,通过Web服务器处理应用程序,数据库的交互,逻辑运算,调用外部程序Data 数据层,储存数据

使用Node创建Web服务器

使用http模块创建

需要使用substr()方法,一个从指定位置返回指定结束的方法,继承自String 最后一个参数可省

// server.js// 引入模块var http = require('http');    // http模块var fs = require('fs');        // fs 文件模块var url = require('url');    // url 统一资源定位符模块// 创建服务器http.createServer((request, response) => {    // 解析请求,保存进变量内    var pathname = url.parse(request.url).pathname;    // 输出请求的文件名    console.log(pathname);    // 从文件系统中读取文件,进行返回    fs.readFile(pathname.substr(1), (err, data) => {    // 使用substr方法进行读取文件的字节,将文件名返回给回调函数        if (err){    // 对错误进行处理            console.log(err);    // 打印出错误            // 返回一个404            response.writeHead(404, {'Content-Type': 'text/html; charset=utf-8'});            response.write("呀,什么都没有╮(╯_╰)╭");            response.write('我猜你要的是 ' + data + ' ?');            response.end();        } else {            // 返回 200            response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});            // 返回文件内容            response.write(data.toString());    // 将读取的文件内容进行字符串化,并进行输出            response.end();    // 关闭连接,发出数据        };    });}).listen(1937);
// index.html            
这是一个小Dome

hello word!

访问

出现hello word完成!

PS C:\Users\mingm\Desktop\test> node Server.js/index.html//input.html/{ [Error: ENOENT: no such file or directory, open 'C:\Users\mingm\Desktop\test\input.html']  errno: -4058,  code: 'ENOENT',  syscall: 'open',  path: 'C:\\Users\\mingm\\Desktop\\test\\input.html' }

改进一点

访问/出现404,说明没有设置首页,设置首页

// 增加对首页的支持,设置默认首页为index.html    if (pathname === '/') {        pathname = pathname + 'index.html';    }

完成后的文件如下

// 引入模块var http = require('http');    // http模块var fs = require('fs');        // fs 文件模块var url = require('url');    // url 统一资源定位符模块// 创建服务器http.createServer((request, response) => {    // 解析请求,保存进变量内    var pathname = url.parse(request.url).pathname;    // 输出请求的文件名    console.log(pathname);    // 增加对首页的支持,设置默认首页为index.html    if (pathname === '/') {        pathname = pathname + 'index.html';    }    // 从文件系统中读取文件,进行返回    fs.readFile(pathname.substr(1), (err, data) => {    // 使用substr方法进行读取文件的字节,将文件名返回给回调函数        if (err){    // 对错误进行处理            console.log(err);    // 打印出错误            // 返回一个404            response.writeHead(404, {'Content-Type': 'text/html; charset=utf-8'});            response.write("呀,什么都没有╮(╯_╰)╭");            response.write('我猜你要的是 ' + data + ' ?');            response.end();        } else {            // 返回 200            response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});            // 返回文件内容            response.write(data.toString());    // 将读取的文件内容进行字符串化,并进行输出            response.end();    // 关闭连接,发出数据        };    });}).listen(1937);

使用node创建客户端

PS C:\Users\mingm\Desktop\test> node get.js302 Found

302 Found


nginx
PS C:\Users\mingm\Desktop\test>
var http = require('http');// 请求的选项var options = {    // 创建一个对象保存相关数据    host:'www.iming.info',    // 主机地址    port:'443',    // 访问端口    method:'GET',    path:'/',    // 访问的文件};// 处理响应的回调函数var callback = (response) => {    // 更新数据    var body = '';    response.on('data', (data) => {        // 绑定事件,data        body += data;        });    response.on('end', () => {    // 绑定end事件        console.log(body);        });};// 开始发送请求var req = http.request(options, callback);    // 发送请求,options为发送请求的选项,callback为处理请求的回调函数,将会有抛出三个事件一个data一个end,一个error,必须有end表示请求完毕,关闭连接req.end();    // 关闭连接

由于小站使用的是nginx的https,使用了证书,需要使用验证秘钥的过程,所以拒绝访问,302没有权限

转载地址:http://riukx.baihongyu.com/

你可能感兴趣的文章
工作中如何做好技术积累
查看>>
Spring Transactional
查看>>
shell脚本实例
查看>>
我的友情链接
查看>>
Windows Phone 7 隔离存储空间资源管理器
查看>>
apache安装报错undefined reference ssl
查看>>
关于爱情只有一句忠告
查看>>
CentOS 7下安装部署Oracle11g图文教程
查看>>
F#初学笔记06
查看>>
实战:将企业域名解析委派给企业DNS服务器
查看>>
在Lync 2013环境部署Office Web Apps
查看>>
微软大会Ignite,你准备好了么?
查看>>
读书笔记-高标管事 低调管人
查看>>
Master带给世界的思考:是“失控”还是进化
查看>>
用户和开发者不满苹果iCloud问题多多
查看>>
java.lang.UnsatisfiedLinkError:no dll in java.library.path终极解决之道
查看>>
我的工具:文本转音频文件
查看>>
【许晓笛】从零开始运行EOS系统
查看>>
【跃迁之路】【460天】程序员高效学习方法论探索系列(实验阶段217-2018.05.11)...
查看>>
C++入门读物推荐
查看>>