构建 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

相关文章
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
1239 130
|
Cloud Native 算法 区块链
站在巨人的肩膀上:gRPC通过HTTP/2构建云原生时代的通信标准
gRPC是云原生时代高效通信标准,基于HTTP/2实现,支持四种服务方法。通过.proto文件定义接口,生成多语言Stub,实现跨语言调用。其请求响应结构清晰,结合Headers、Data帧与Trailers,保障高性能与可扩展性,广泛应用于微服务架构中。
582 0
|
JSON 中间件 Go
Go 网络编程:HTTP服务与客户端开发
Go 语言的 `net/http` 包功能强大,可快速构建高并发 HTTP 服务。本文从创建简单 HTTP 服务入手,逐步讲解请求与响应对象、URL 参数处理、自定义路由、JSON 接口、静态文件服务、中间件编写及 HTTPS 配置等内容。通过示例代码展示如何使用 `http.HandleFunc`、`http.ServeMux`、`http.Client` 等工具实现常见功能,帮助开发者掌握构建高效 Web 应用的核心技能。
678 61
|
应用服务中间件 网络安全 数据安全/隐私保护
网关服务器配置指南:实现自动DHCP地址分配、HTTP服务和SSH无密码登录。
哇哈哈,道具都准备好了,咱们的魔术秀就要开始了。现在,你的网关服务器已经魔法满满,自动分配IP,提供网页服务,SSH登录如入无人之境。而整个世界,只会知道效果,不会知道是你在幕后操控一切。这就是真正的数字世界魔法师,随手拈来,手到擒来。
705 14
|
中间件 Go
Golang | Gin:net/http与Gin启动web服务的简单比较
总的来说,`net/http`和 `Gin`都是优秀的库,它们各有优缺点。你应该根据你的需求和经验来选择最适合你的工具。希望这个比较可以帮助你做出决策。
788 35
|
JSON 编解码 API
Go语言网络编程:使用 net/http 构建 RESTful API
本章介绍如何使用 Go 语言的 `net/http` 标准库构建 RESTful API。内容涵盖 RESTful API 的基本概念及规范,包括 GET、POST、PUT 和 DELETE 方法的实现。通过定义用户数据结构和模拟数据库,逐步实现获取用户列表、创建用户、更新用户、删除用户的 HTTP 路由处理函数。同时提供辅助函数用于路径参数解析,并展示如何设置路由器启动服务。最后通过 curl 或 Postman 测试接口功能。章节总结了路由分发、JSON 编解码、方法区分、并发安全管理和路径参数解析等关键点,为更复杂需求推荐第三方框架如 Gin、Echo 和 Chi。
|
JSON 安全 网络协议
HTTP/HTTPS协议(请求响应模型、状态码)
本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
1288 20
|
JavaScript 前端开发 开发者
Node学习笔记:HTTP模块
总的来说,Node.js的HTTP模块是一个强大的工具,可以帮助你处理HTTP协议的各种需求。无论你是想开设自己的餐厅(创建服务器),还是想去别的餐厅点菜(发出请求),HTTP模块都能满足你的需求。
465 18
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
498 0