node web模块 (服务器端和客户端)

简介:

node web模块

web服务器

web服务器指网站服务器,指驻留在因特网上的某种程序,web浏览器的基本功能,提供信息浏览服务
web支持服务器端的脚本语言,通过脚本语言从数据库获取数据,将结果返回给客户端浏览器

web应用基本架构

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

使用Node创建Web服务器

使用http模块创建

需要使用substr()方法,一个从指定位置返回指定结束的方法,继承自String 最后一个参数可省 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/substr

// 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);
AI 代码解读
// index.html
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title>这是一个小Dome</title>
    </head>
    <body>
        <h1>hello word!</h1>
    </body>
</html>
AI 代码解读

访问 http://127.0.0.1:1937/index.html
出现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' }
AI 代码解读

改进一点

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

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

完成后的文件如下

// 引入模块
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('我猜你要的是&nbsp;' + data + '&nbsp;?');
            response.end();
        } else {
            // 返回 200
            response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
            // 返回文件内容
            response.write(data.toString());    // 将读取的文件内容进行字符串化,并进行输出
            response.end();    // 关闭连接,发出数据
        };
    });
}).listen(1937);
AI 代码解读

使用node创建客户端

PS C:\Users\mingm\Desktop\test> node get.js
<html>
<head><title>302 Found</title></head>
<body bgcolor="white">
<center><h1>302 Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

PS C:\Users\mingm\Desktop\test>
AI 代码解读
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();    // 关闭连接
AI 代码解读

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

目录
打赏
0
0
0
0
911
分享
相关文章
nodejs里面的http模块介绍和使用
综上所述,Node.js的http模块是构建Web服务的基础,其灵活性和强大功能,结合Node.js异步非阻塞的特点,为现代Web应用开发提供了坚实的基础。
140 62
Node.js作为一种快速、可扩展的服务器端运行时环境
Node.js作为一种快速、可扩展的服务器端运行时环境
57 8
使用Node.js创建一个简单的Web服务器
使用Node.js创建一个简单的Web服务器
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
73 3
|
2月前
|
使用node.js搭建一个express后端服务器
Express 是 Node.js 的一个库,用于搭建后端服务器。本文将指导你从零开始构建一个简易的 Express 服务器,包括项目初始化、代码编写、服务启动与项目结构优化。通过创建 handler 和 router 文件夹分离路由和处理逻辑,使项目更清晰易维护。最后,通过 Postman 测试确保服务正常运行。
133 1
性能优化:Node.js高效服务器开发技巧与最佳实践
【10月更文挑战第29天】在Node.js服务器开发中,性能优化至关重要。本文介绍了几种高效开发的最佳实践,包括使用缓存策略、采用异步编程、实施负载均衡和性能监控。通过示例代码展示了如何实现这些技术,帮助开发者构建更快、更稳定的Node.js应用。
119 2
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
56 4
使用JavaScript和Node.js构建简单的RESTful API服务器
【10月更文挑战第12天】使用JavaScript和Node.js构建简单的RESTful API服务器
37 0
Node.js 工具模块
10月更文挑战第7天
35 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等