服务器
发布日期:2021-05-11 00:26:16 浏览次数:14 分类:精选文章

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

服务器端基础概念

网站的组成

网站应用程序主要分为客户端和服务器端两大部分。客户端运行于浏览器中,是用户与之交互的部分,采用HTML、CSS、JavaScript等技术构建。服务器端运行于服务器上,负责存储数据并处理应用逻辑,提供服务于客户端的功能。

Node网站服务器

网站服务器是接收客户端请求并做出响应的机器,能够为用户提供网站访问服务。Node.js是一种流行的服务器端框架,适合构建高性能的网络应用程序。

端口

端口是计算机系统中用于交换数据的特殊数字,可以看作是流量的唯一通道,服务器通过端口来区分不同的服务,支持并发处理多种类型的网络连接。

URL

统一资源定位符(URL)是网络中标识资源位置的编码方式。常见的URL结构包括传输协议、服务器地址、端口、文件路径和查询参数等。例如:http://www.baidu.com/25588.html。

URL组成

一般URL格式为:传输协议://服务器IP或域名:端口/资源路径

常用传输协议如HTTP、HTTPS,上述URL中“http”表示使用HTTP协议。路径和查询参数部分表示访问的资源和附加信息。

创建Web服务器

使用Node.js创建简单的Web服务器,代码如下:

const http = require('http'); const app = http.createServer(); app.on('request', (req, res) => { res.end('

hi, user

'); }); app.listen(3000); console.log('服务器已启动,监听3000端口,请访问localhost:3000');

该代码通过Node.js创建了一个基本的Web服务器,能够接收客户端的HTTP请求并返回简单的响应。

HTTP协议

HTTP协议的概念

超文本传输协议(HTTP)是用于客户端和服务器之间传输网页内容的协议,默认使用明文传输,基于请求-应答模式工作。

HTTP报文

HTTP请求和响应中传递数据的格式称为报文。报文包括请求方法、请求路径、加载过时版本标识、内容长度等信息,以及获取服务器支持的语言和字符编码等。响应报文则包括HTTP状态码、内容类型、服务器信息和响应数据等。

请求报文

请求报文中包含以下信息:

  • 请求方法(如GET或POST):指定客户端希望从服务器获取或发送的操作类型。
  • 请求地址(URL):指定要访问的资源位置。
  • 通过以下方式获取请求报文信息:

    req.headers // 获取请求头信息
    req.url // 获取请求URL
    req.method // 获取请求方法

    响应报文

    响应报文的内容通常包括:

  • HTTP状态码:描述请求处理结果的数字代码。常见状态码包括200(成功)、400(客户端错误)、500(服务器错误)等。
  • 内容类型(Content-Type):告知客户端如何解析响应数据。例如,text/html表示HTML内容,application/json表示JSON数据格式。
  • 通过以下方式设置响应报文:

    res.writeHead(statusCode, { 'Content-Type': 'text/plain' });
    res.end(' 响应标题 ');

    HTTP请求与响应处理

    请求参数

    客户端向服务器发送请求时,可能携带客户端信息。这些信息通常通过查询参数或请求体传递。

    GET请求参数

    GET请求将参数放置在URL中,例如:http://localhost:3000/?name=zhangsan&age=20。通过URL.parse将参数解析为对象格式:

    const url = require('url');
    const query = url.parse(req.url, true).query;
    console.log(query.name, query.age);

    POST请求参数

    POST请求将参数放置在请求体中,通过data事件和end事件获取参数:

    const querystring = require('querystring');
    let postParams = '';
    req.on('data', (chunk) => {
    postParams += chunk;
    });
    req.on('end', () => {
    const parsedQuery = querystring.parse(postParams);
    console.log(parsedQuery);
    });

    路由

    路由是指服务器将不同请求地址与相应的处理逻辑对应起来。例如:

    • http://localhost:3000/index
    • http://localhost:3000/login

    简单的路由实现可以通过解析请求路径来实现:

    const url = require('url');
    const { pathname } = url.parse(req.url);
    if (pathname === '/' || pathname === '/index') {
    res.end(' 欢迎来到首页 ');
    } else if (pathname === '/list') {
    res.end('欢迎来到列表页');
    } else {
    res.end('抱歉,您访问的页面不存在');
    }

    静态资源

    服务器端可以直接响应客户端未经处理的资源文件,如图片、CSS和JavaScript文件。例如:

    • stylesheets/base.css
    • JavaScript/app.js
    • images/logo.png

    静态资源访问可以通过简单的文件读取实现:

    const fs = require('fs');
    const path = require('path');
    app.use(express.static('public'));
    app.on('request', (req, res) => {
    const filePath = path.join(__dirname, 'public', req.url);
    fs.readFile(filePath, (error, content) => {
    res.end(content);
    });
    });

    动态资源

    动态资源在同一个请求路径下会返回不同的响应内容。例如:

    • http://www.baidu.com/article?id=1
    • http://www.baidu.com/article?id=2

    动态资源处理需要在路径基础上添加动态参数:

    app.on('request', (req, res) => {
    const doi = req.url.split('/article”)[1];
    fs.readFile(`database/articles/${doi}`, (error, content) => {
    res.end(content);
    });
    });
    上一篇:Node
    下一篇:Node

    发表评论

    最新留言

    逛到本站,mark一下
    [***.202.152.39]2025年04月28日 02时33分43秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章

    ELK应用日志收集实战 2025-03-29
    elTable火狐浏览器换行 2025-03-29
    15个Python数据处理技巧(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    2023年深信服、奇安信、360等大厂网络安全校招面试真题合集(附答案),让你面试轻松无压力! 2025-03-29
    2024年全国程序员平均薪资排名:同样是程序员,为什么差这么多?零基础到精通,收藏这篇就够了 2025-03-29
    0基础成功转行网络安全工程师,年薪30W+,经验总结都在这(建议收藏) 2025-03-29
    100个电脑常用组合键大全(非常详细)零基础入门到精通,收藏这篇就够了 2025-03-29
    10个程序员可以接私活的平台 2025-03-29
    10个程序员可以接私活的平台(非常详细)零基础入门到精通,收藏这篇就够了 2025-03-29
    10个运维拿来就用的 Shell 脚本,用了才知道有多爽,零基础入门到精通,收藏这一篇就够了 2025-03-29
    10条sql语句优化的建议 2025-03-29
    10款宝藏编程工具!新手必备,大牛强烈推荐! 从零基础到精通,收藏这篇就够了! 2025-03-29
    10款最佳免费WiFi黑客工具(附传送门)零基础入门到精通,收藏这一篇就够了 2025-03-29
    15个Python数据分析实用技巧(非常详细)零基础入门到精通,收藏这一篇就够了 2025-03-29
    15个备受欢迎的嵌入式GUI库,从零基础到精通,收藏这篇就够了! 2025-03-29
    15个程序员常逛的宝藏网站!!从零基础到精通,收藏这篇就够了! 2025-03-29
    1分钟学会在Linux下模拟网络延迟 2025-03-29
    200款免费的AI工具汇总 2025-03-29
    2023年失业的你明白了什么道理? 2025-03-29
    00后整顿职场?公司测试岗却新来了个00后卷王,3个月薪资干到20K... 2025-03-29