正在运营的网站被注销备案怎么办,wordpress阿里云cdn,网站建设和推广话术,wordpress cms教程一、前言
上篇文章我们介绍了express-generator的请求体解析#xff0c;重点讲了常用的请求体数据格式#xff08;JSON/URL 编码的表单数据#xff09;以及一个FILE文件上传#xff0c;同时搭配代码示范进行辅助理解。
二、本篇重点
我们继续第一阶段的知识#xff0c;…一、前言
上篇文章我们介绍了express-generator的请求体解析重点讲了常用的请求体数据格式JSON/URL 编码的表单数据以及一个FILE文件上传同时搭配代码示范进行辅助理解。
二、本篇重点
我们继续第一阶段的知识本篇把最后两个知识点路由中间件和错误请求讲完顺利完成第一阶段的初步认识和学习。
三、知识点路由中间件
1、路由中间件是什么 路由中间件是 Express 中的一个强大功能它允许你在处理请求之前和之后执行自定义逻辑。中间件可以用于各种任务如日志记录、身份验证、数据验证等。 路由中间件可以被理解为一个函数它接收三个参数req请求对象、res响应对象和 next函数。这个函数可以对这三个参数进行操作并且通过这些操作来影响 Express 服务器的行为。以下是路由中间件的一些关键点 接收参数 req请求对象包含了请求的所有信息如请求方法、URL、请求头、请求体等。中间件可以读取和修改 req 对象的属性。res响应对象用于向客户端发送响应。中间件可以发送响应、设置响应头、设置响应状态码等。next函数调用 next() 可以将控制权传递给下一个中间件或路由处理函数。如果不调用 next()请求处理流程将停止。 操作和影响 读取和修改请求信息中间件可以读取请求中的数据如解析请求体、获取请求头信息等。也可以修改请求对象如添加自定义属性、修改请求参数等。发送响应中间件可以直接向客户端发送响应结束请求处理流程。例如可以发送错误响应、重定向响应等。执行自定义逻辑中间件可以执行各种自定义逻辑如身份验证、日志记录、数据验证、缓存处理等。错误处理中间件可以捕获和处理错误将错误传递给错误处理中间件或者直接发送错误响应。 中间件的执行顺序 顺序执行中间件按照它们在 app.use() 中被调用的顺序执行。每个中间件都有机会处理请求并决定是否将控制权传递给下一个中间件。调用 next()中间件通过调用 next() 函数来将控制权传递给下一个中间件。如果中间件不调用 next()请求处理流程将停止不会执行后续的中间件或路由处理函数。 2、express-generator创建express应用程序默认使用的路由中间件 首先让我们看看使用express-generator创建一个express应用程序时app.js默认使用的路由中间件有哪些 知识点相关介绍 1. logger(dev) 作用使用 morgan 日志记录器中间件记录 HTTP 请求的详细信息。配置dev 是 morgan 的预定义格式之一它会在开发环境中提供简洁的彩色日志输出包括请求方法、URL、响应状态码和响应时间等。使用场景用于开发环境中的日志记录帮助开发者监控和调试应用程序。 2. express.json() 作用解析 JSON 格式的请求体。使用场景用于处理客户端发送的 JSON 数据例如 API 请求中的 JSON 数据。 3. express.urlencoded({ extended: false }) 作用解析 URL 编码的请求体。配置{ extended: false } 表示使用内置的查询字符串解析器它只能解析简单的键值对不支持嵌套对象或数组。使用场景用于处理 HTML 表单提交的数据这些数据通常以 application/x-www-form-urlencoded 格式发送。 4. cookieParser() 作用解析客户端发送的 Cookie。使用场景用于处理客户端发送的 Cookie以便在服务器端进行身份验证或其他需要 Cookie 的操作。 5. express.static(path.join(__dirname, public)) 作用提供静态文件服务。配置path.join(__dirname, public) 指定了静态文件的目录通常是项目的 public 目录。使用场景用于提供网站的静态资源如图片、CSS、JavaScript 文件等使得客户端可以直接访问这些文件。 3、动手写一个简单的路由中间件
const express require(express);
const app express();// 定义一个日志记录中间件
function logRequest(req, res, next) {const { method, url } req;console.log(Received ${method} request for ${url});next(); // 调用下一个中间件
}// 使用中间件
app.use(express.json()) //解析请求体数据
app.use(logRequest); //日志记录中间件
app.get(/, (req, res) {res.send(Hello, World!);
});
app.post(/user, (req, res) {console.log(接收的请求体参数,req.body);res.send(req.body);});app.listen(3009, () {console.log(Server is running on port 3009);
}); 启动服务器打开apipost工具进行路由测试 在这个示例中logRequest 中间件会在每个请求到达时记录请求方法和 URL。 四、知识点错误处理 错误处理是任何 Web 应用程序的重要组成部分。在 Express 中错误处理中间件用于捕获和处理在请求处理过程中发生的错误。 常用知识点 错误处理中间件必须有四个参数err、req、res 和 next。抛出错误在中间件或路由处理函数中使用 next(err) 来传递错误。自定义错误对象可以创建自定义错误对象以提供更详细的错误信息。 1、常见的错误类型 语法错误由于代码编写错误导致的错误如拼写错误、语法不正确等。运行时错误在代码执行过程中发生的错误如访问未定义的变量、调用不存在的方法等。HTTP 错误与 HTTP 请求和响应相关的错误如 404未找到、500服务器内部错误等。输入验证错误由于用户输入不符合预期格式或规则导致的错误。数据库错误与数据库操作相关的错误如查询失败、连接错误等。 2、错误处理中间件 错误处理中间件是 Express 中用于处理错误的特殊中间件。它有四个参数err、req、res 和 next。当在中间件或路由处理函数中调用 next(err) 时控制权会传递给错误处理中间件。 一个简单的代码示范
const express require(express);
const app express();// 模拟一个路由处理函数可能会抛出错误
app.get(/error, (req, res, next) {const error new Error(Something went wrong!);error.status 500; // 设置 HTTP 状态码next(error); // 将错误传递给错误处理中间件
});// 错误处理中间件
app.use((err, req, res, next) {console.error(err.stack); // 记录错误堆栈res.status(err.status || 500).json({error: {message: err.message}});
});app.listen(3009, () {console.log(Server is running on port 3009);
}); 启动服务器在apipost工具中进行测试。 点击发送得到结果 3、自定义错误对象 自定义错误对象可以帮助我们更清晰地表示特定类型的错误并提供额外的上下文信息。 以下是一个自定义错误对象的简单代码示范。
const express require(express);
const app express();// 自定义错误类
class CustomError extends Error {constructor(message, status) {super(message);this.status status;this.name CustomError;}
}// 模拟路由 1抛出自定义错误
app.get(/custom-error, (req, res, next) {const error new CustomError(Custom error occurred, 400);next(error);
});// 模拟路由 2抛出普通错误
app.get(/error, (req, res, next) {const error new Error(Something went wrong!);error.status 500;next(error);
});// 错误处理中间件
app.use((err, req, res, next) {console.error(err.stack);res.status(err.status || 500).json({error: {message: err.message,name: err.name}});
});app.listen(3009, () {console.log(Server is running on port 3009);
});
启动服务打开apipost攻击进行测试 五、总结
至此我们初步完成第一阶段的所有知识学习以及练习。多动手实践举一反三希望文章的案例会对大家有所帮助。
接下来的文章我们接着第二阶段的知识学习以及代码案例练习。第二阶段的大纲如下 第二阶段进阶与应用 RESTful API 设计 学习如何设计符合 REST 原则的 API包括资源的表示和 HTTP 方法的使用。 路由分组 学习如何使用路由分组来组织相关的路由提高代码的可维护性。 路由重定向 学习如何使用 res.redirect() 和 res.location() 来实现路由重定向。 CRUD 操作 练习实现完整的 CRUD 操作的路由包括与数据库的交互。 如果你喜欢这篇文章请点赞收藏。
关注我获取前端更多使用知识。
最近业务需求多会比较忙但我也会抽出时间进行更新文章敬请期待。 文章转载自: http://www.morning.jzfxk.cn.gov.cn.jzfxk.cn http://www.morning.mmhaoma.com.gov.cn.mmhaoma.com http://www.morning.bnkcl.cn.gov.cn.bnkcl.cn http://www.morning.pffx.cn.gov.cn.pffx.cn http://www.morning.flchj.cn.gov.cn.flchj.cn http://www.morning.rjynd.cn.gov.cn.rjynd.cn http://www.morning.pcngq.cn.gov.cn.pcngq.cn http://www.morning.pwksz.cn.gov.cn.pwksz.cn http://www.morning.mtxrq.cn.gov.cn.mtxrq.cn http://www.morning.ktblf.cn.gov.cn.ktblf.cn http://www.morning.rxfgh.cn.gov.cn.rxfgh.cn http://www.morning.lssfd.cn.gov.cn.lssfd.cn http://www.morning.ktpzb.cn.gov.cn.ktpzb.cn http://www.morning.qbksx.cn.gov.cn.qbksx.cn http://www.morning.rpkg.cn.gov.cn.rpkg.cn http://www.morning.nwtmy.cn.gov.cn.nwtmy.cn http://www.morning.djbhz.cn.gov.cn.djbhz.cn http://www.morning.hxrg.cn.gov.cn.hxrg.cn http://www.morning.wmpw.cn.gov.cn.wmpw.cn http://www.morning.rbrd.cn.gov.cn.rbrd.cn http://www.morning.wjfzp.cn.gov.cn.wjfzp.cn http://www.morning.bfnbn.cn.gov.cn.bfnbn.cn http://www.morning.qxycf.cn.gov.cn.qxycf.cn http://www.morning.mcjp.cn.gov.cn.mcjp.cn http://www.morning.xq3nk42mvv.cn.gov.cn.xq3nk42mvv.cn http://www.morning.fxygn.cn.gov.cn.fxygn.cn http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn http://www.morning.kjlhb.cn.gov.cn.kjlhb.cn http://www.morning.pcqxr.cn.gov.cn.pcqxr.cn http://www.morning.rkypb.cn.gov.cn.rkypb.cn http://www.morning.lnbyk.cn.gov.cn.lnbyk.cn http://www.morning.lxkhx.cn.gov.cn.lxkhx.cn http://www.morning.jtfcd.cn.gov.cn.jtfcd.cn http://www.morning.rnrfs.cn.gov.cn.rnrfs.cn http://www.morning.ktyww.cn.gov.cn.ktyww.cn http://www.morning.pngdc.cn.gov.cn.pngdc.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.knngw.cn.gov.cn.knngw.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.rpth.cn.gov.cn.rpth.cn http://www.morning.drfrm.cn.gov.cn.drfrm.cn http://www.morning.hkpn.cn.gov.cn.hkpn.cn http://www.morning.pmsl.cn.gov.cn.pmsl.cn http://www.morning.smsjx.cn.gov.cn.smsjx.cn http://www.morning.ljqd.cn.gov.cn.ljqd.cn http://www.morning.jwxnr.cn.gov.cn.jwxnr.cn http://www.morning.ywrt.cn.gov.cn.ywrt.cn http://www.morning.bxsgl.cn.gov.cn.bxsgl.cn http://www.morning.jcwrb.cn.gov.cn.jcwrb.cn http://www.morning.gqryh.cn.gov.cn.gqryh.cn http://www.morning.deanzhu.com.gov.cn.deanzhu.com http://www.morning.gthc.cn.gov.cn.gthc.cn http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.tpkxs.cn.gov.cn.tpkxs.cn http://www.morning.rpms.cn.gov.cn.rpms.cn http://www.morning.zzfqn.cn.gov.cn.zzfqn.cn http://www.morning.sqqkr.cn.gov.cn.sqqkr.cn http://www.morning.rwrn.cn.gov.cn.rwrn.cn http://www.morning.qkdjq.cn.gov.cn.qkdjq.cn http://www.morning.dpdr.cn.gov.cn.dpdr.cn http://www.morning.sfdsn.cn.gov.cn.sfdsn.cn http://www.morning.wlnr.cn.gov.cn.wlnr.cn http://www.morning.wqtzs.cn.gov.cn.wqtzs.cn http://www.morning.wdhhz.cn.gov.cn.wdhhz.cn http://www.morning.nbrdx.cn.gov.cn.nbrdx.cn http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn http://www.morning.lqlc.cn.gov.cn.lqlc.cn http://www.morning.ujianji.com.gov.cn.ujianji.com http://www.morning.wmfny.cn.gov.cn.wmfny.cn http://www.morning.ummpdl.cn.gov.cn.ummpdl.cn http://www.morning.fksyq.cn.gov.cn.fksyq.cn http://www.morning.cbtn.cn.gov.cn.cbtn.cn http://www.morning.fcrw.cn.gov.cn.fcrw.cn http://www.morning.hcqpc.cn.gov.cn.hcqpc.cn http://www.morning.blfgh.cn.gov.cn.blfgh.cn http://www.morning.dtmjn.cn.gov.cn.dtmjn.cn http://www.morning.ohmyjiu.com.gov.cn.ohmyjiu.com http://www.morning.nqbpz.cn.gov.cn.nqbpz.cn http://www.morning.rtqyy.cn.gov.cn.rtqyy.cn