构建 http 服务程序-根据不同请求做出不同响应|学习笔记

简介: 快速学习构建 http 服务程序-根据不同请求做出不同响应

开发者课程【Node.js 入门与实战:构建 http 服务程序-根据不同请求做出不同响应 】学习笔记,与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/588/detail/8259


构建 http 服务程序-根据不同请求做出不同响应

 

内容介绍

一、用户请求

二、根据用户的不同请求做出不同响应

 

一、用户请求

代码如下:

// 2. 创建一个http服务对象

var server = http.createServer();

// 3. 监听用户的请求事件(request事件)

// request 对象包含了用户请求报文中的所有内容,通过request对象可以获取所有用户提交过来的数据

// response 对象用来向用户响应一些数据,当服务器要向客户端响应数据的时候必须使用 response 对象

// 有了request 对象 和 response对象,就既可以获取用户提交的数据,也可以向用户响应数据了

Server.on(request, function (req, res) {

 // 解决乱码的思路:服务器通过设置http响应报文头,告诉浏览 器使用相应的编码来解析网页

res . setHeader( ' Content-Type',  'text/html; charset=utf-8'); res .write( 'Hello <h1>World</h1>!!!!你好世界! ');

//对于每一个请求,服务器必须结束响应,否则客户端(浏览器)会一直等待服务器响应结束

res. end();

});

如何达到用户请求路径:

看请求报文头,访问网站根目录时请求报文头的路径是“/”,

当访问根目录下/abc

再访问根目录下/abc下的/fds/fds/fds/f/sfs/faa

出现的都是不一样的结果。

请求报文头里面的数据在request对象里,request对象是当用户服务器解析的请求报文生成的对象。

request对象里面的req.url属性能拿到这次请求路径的属性。

// 4. 启动服务

server. listen(8080, function () {

console.log('服务器启动了,请访问: http://localhost:8080' );

});

二、根据用户的不同请求做出不同响应

新建一个代码

步骤:1.加载http模块

2. 创建http服务

3. 监听request事件

4. 启动服务

代码如下:

//根据用户的不同请求,服务器做出不同的响应

// 1.加载http模块

var http = require('http');

// 2.创建http服务

http . createServer(function (req, res) {

 //获取用户请求的路径req.url

console.1og(req.url);

//结束响应

res.end( );

// 通过req.url获取用户请求的路径,根据不同的请求路径服务器做出不同的响应

if (req.url === / | | req.url === /index) {

// res.write(hello index);

// res.end();

res.end(Hello Index);

}else if (req.url ===' /login') {

res .end('Hello login' );

}else if (req.url ===' /list') {

res.end( 'Hello List');

}else if (req.url === ' /register') {

res.end('Hello Register');

}else {

res.end('404, not Found. 客户端错误! @');

}

}).listen(8080, function () {

console. log( 'http://localhost:8080');

});

(1)运行结果:

image.png

浏览器会自动请求网站图标文件

当请求网站根目录时浏览器自动向favicon发起请求,所以会出现两个 /favicon.ico  

 image.png

当在根目录下写/abc 出现的结果为 /abc/favicon.ico ;在再后面写/x.html 结果为favicon.ico 

发现通过request对象的url属性就能拿到用户每次请求的路径。(2)通过req.url获取用户请求的路径,根据不同的请求路径服务器做出不同的响应:

假设当用户请求/根目录的时候,响应一个hello index;当用户请求/index,也响应一个hello index; 当用户请求/login,响应一个hello login;当用户请求/list,响应一个hello list;当用户请求/register,响应一个hello register;这样用户请求不同路径,给出的是不同的响应。

如果是请求if (req.url === / | | req.url === /index) 这两种情况,向用户响应一个hello index。

可以写如下代码:res.write(hello index);

res.end();

也可以简便成一句代码:res.end(Hello Index);

如果用户请求的不是这些:

if (req.url === / | | req.url === /index) {

res.end(Hello Index);

}else if (req.url ===' /login') {

res .end('Hello login' );

}else if (req.url ===' /list') {

res.end( 'Hello List');

}else if (req.url === ' /register') {

res.end('Hello Register');

这时我的网站没有处理其他网站的功能,其他情况下就是如下代码:

}else {

res.end('404, not Found. 客户端错误! @');

}

运行结果:

 image.png

请求结果错误的。

解决乱码的问题直接来一个响应头:res.setHeader(Content-Type, text/plain; charset=utf-8);

再次运行错误请求结果如下:

image.png

服务器只写我们要处理的路径,对于不处理的路径一概是404。

比如请求百度下不存在的路径出现的结果就是:

image.png

相关文章
|
7天前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
46 25
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
|
6天前
|
Web App开发 大数据 应用服务中间件
什么是 HTTP Range请求(范围请求)
HTTP Range 请求是一种非常有用的 HTTP 功能,允许客户端请求资源的特定部分,从而提高传输效率和用户体验。通过合理使用 Range 请求,可以实现断点续传、视频流播放和按需加载等功能。了解并掌握 HTTP Range 请求的工作原理和应用场景,对开发高效的网络应用至关重要。
41 15
|
10天前
|
数据采集 JSON 测试技术
Grequests,非常 Nice 的 Python 异步 HTTP 请求神器
在Python开发中,处理HTTP请求至关重要。`grequests`库基于`requests`,支持异步请求,通过`gevent`实现并发,提高性能。本文介绍了`grequests`的安装、基本与高级功能,如GET/POST请求、并发控制等,并探讨其在实际项目中的应用。
21 3
|
7天前
|
Web App开发 网络安全 数据安全/隐私保护
Lua中实现HTTP请求的User-Agent自定义
Lua中实现HTTP请求的User-Agent自定义
|
3月前
|
监控 安全 搜索推荐
设置 HTTPS 协议以确保数据传输的安全性
设置 HTTPS 协议以确保数据传输的安全性
|
16天前
|
安全 搜索推荐 网络安全
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
HTTPS协议是**一种通过计算机网络进行安全通信的传输协议
43 11
|
16天前
|
缓存 安全 网络协议
HTTPS协议的历史发展
HTTPS协议的历史发展
30 8
|
17天前
|
安全 应用服务中间件 Linux
判断一个网站是否使用HTTPS协议
判断一个网站是否使用HTTPS协议
28 4
|
2月前
|
安全 网络协议 算法
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
202 4
HTTPS网络通信协议揭秘:WEB网站安全的关键技术
|
2月前
|
存储 网络安全 对象存储
缺乏中间证书导致通过HTTPS协议访问OSS异常
【10月更文挑战第4天】缺乏中间证书导致通过HTTPS协议访问OSS异常
112 4

热门文章

最新文章