HTTP方法
在CSSer前面的文章中我们已经接触过app.get()多次了,同时Express也提供了对其它HTTP动作的封装,如app.post(), app.del()等。
对于POST最常见的例子,就是当我们提交一个表单时,下面我们在HTML中将表单的method特性设置为“post”,然后需要在服务端定义对该表单提交的路由控制。
<form method="post" action="/">
<input type="text" name="user[name]" />
<input type="text" name="user[email]" />
<input type="submit" value="Submit" data-description="csser.com" />
</form>
默认情况下Express并不知道该如何处理该请求体,因此我们需要增加bodyParser中间件,用于分析application/x-www-form-urlencoded和application/json请求体,并把变量存入req.body。我们可以像下面的样子来“使用”中间件:
app.use(express.bodyParser());
接下来下面的路由就可以访问req.body.user对象了,该对象包含客户端提交的name和email属性。
app.post('/', function(req, res){
console.log(req.body.user);
res.redirect('back');
});
要在表单中使用PUT的HTTP方法,我们可以利用名为_method的隐藏表单域,它能改变HTTP方法。而在服务端,我们首先需要利用methodOverride中间件,把它放在bodyParser中间件下方,从而可以利用包含表单值的req.body。
app.use(express.bodyParser());
app.use(express.methodOverride());
之所以需要这样做,是因为这些处理并不总是默认进行的,原因很简单,因为这些对Express的整体功能来说并不是必需的,依据应用的具体需求,你并不一定需要这些功能,如果客户端直接支持PUT和DELETE方法也可以被直接访问到,同时methodOverride为表单提供了强大的解决方案,下面我们展示下PUT的使用:
<form method="post" action="/">
<input type="hidden" name="_method" value="put" />
<input type="text" name="user[name]" />
<input type="text" name="user[email]" />
<input type="submit" value="Submit" />
</form>
app.put('/', function(){
console.log(req.body.user);
res.redirect('back');
});
错误处理
Express提供了app.error()方法来接收路由或传入next(err)的异常,下面的示例为不同的页面提供专门的NotFound异常服务:
function NotFound(msg){
this.name = 'NotFound in csser.com';
Error.call(this, msg);
Error.captureStackTrace(this, arguments.callee);
}
NotFound.prototype.__proto__ = Error.prototype;
app.get('/404', function(req, res){
throw new NotFound;
});
app.get('/500', function(req, res){
throw new Error('keyboard cat!');
});
像下面一样,我们可以多次调用app.error(),这里我们检查如果是NotFound实例就显示404页面,否则将其传入下一个错误处理。
注意这些处理可以定义在任何地方,它们可以放在路由可以listen()之处。这也允许在configure()块内做定义,于是我们就可以以不同的基于环境的方式处理异常。
app.error(function(err, req, res, next){
if (err instanceof NotFound) {
res.render('404.jade');
} else {
next(err);
}
});
下面的演示我们假设所有错误都为500错误,但你可以根据喜好选择。例如当node在处理文件系统调用时,就有可能接收到这样的错误对象,其ENOENT的error.code为“no such file or directory”,这时我们可以在错误处理函数中进行处理然后显示特定的页面给用户。
app.error(function(err, req, res){
res.render('500.jade', { error: err });
});
我们的应用也可以利用Connect errorHandler中间件来汇报异常信息。例如我们想在“开发”环境输出异常到stderr:
app.use(express.errorHandler({ dumpExceptions: true }));
同时在开发期间我们想用好看的HTML页面显示异常信息时,可以设置showStack的值为true:
app.use(express.errorHandler({ showStack: true, dumpExceptions: true }));
如果请求头支持application/json,errorHandler中间件也能以json方式做出响应,这对依赖于客户端Javascript的应用开发很有益处。
相关推荐
集中式错误处理 异步请求处理程序和中间件 处理请求 中间件 使用Celebrate请求验证 集中授权 Swagger自动生成的文档 [带有multer的文件上传示例](#file-upload) 示例应用程序(TypeScript和ES5) *使用markdown...
Node.js,Express和MongoDB项目结构这是一个基本的项目结构,可帮助您使用Express框架和MongoDB,并以基于干净的MVC架构的良好结构实践为基础,开始构建自己的RESTful Web API(适用于...错误处理环境变量Express以外
Nodejs学习笔记阿里CBU前端团队招人,无论是serverless,跨端,...目录如下错误处理全局对象模块机制命令行设计-repl定时器安全加密-tls进阶使用express进阶:多模板引擎支持基于express + XHR的跨域资源请求微信公众号
1. 提高效率:系统可以自动化处理大量的数据和信息,从而减少了人工操作的时间和错误率,提高了工作效率和质量。 2. 降低成本:系统可以减少人力资源和物质资源的浪费,使企业在生产和管理上节约成本,提高企业效益...
具有Webpack,自定义域和单元测试支持的无服务器框架的Node.js入门 安装后,您可以在几分钟之内创建和部署具有最新ES6功能的功能,并加入棉绒和格式。 使用插件和 。 它支持: 处理函数中的ES7语法 使用异步/等待...
使用 Koa 编写 web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。Koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。开发思路和...
Koa是由Express背后的团队设计的一种新的Web框架,旨在为Web应用程序和API提供更小,更富表现力和更强大的基础。 通过利用生成器,Koa允许您放弃回调并大大提高错误处理能力。 Koa在内核中未捆绑任何中间件,并提供...
通过实时错误警报和详细的诊断报告,获得针对已处理和未处理错误的跨平台错误检测。 从Bugsnag了解有关和的更多信息。 这是一个Monorepo(由管理),其中包含我们的通用错误报告客户端 ,Expo客户端和React ...
使用 koa 编写 web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。开发思路和...
使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得...
NB马上就可以处理[公制]吨的样板文件:微服务风格的设置,集群,Docker支持,数据库迁移,自动化测试,错误处理,模块化,高级日志记录,模板化视图,环境–命名。 而所有这些都无需处理沉重的或自以为是的框架! ...
一项要求是REST API服务使用Nodejs Express框架提供事件信息。 您将需要添加功能以添加和删除信息以及执行一些查询。 您将处理git事件数据的典型信息,例如存储库,actor,事件类型等。团队提出了一系列要求,包括...
Express / Koa错误处理中间件 开发期间有关NodeJS错误的更好的上下文信息。 中间件解析请求/响应周期中发生的潜在错误,并显示堆栈跟踪以及响应中的其他上下文。 特征: 堆栈跟踪+可折叠代码(摘要) 源图 环境...
Node.js服务器模板目录基本信息这是具有CRUD操作简单逻辑的简单Node.js服务器应用程序样板。 它提供了REST API。 在使用它之前,请确保您已经安装了以下程序作为版本控制, 作为服务器程序, 如Node.js的包管理器, ...
Koa是由Express背后的团队设计的一种新的Web框架,旨在为Web应用程序和API提供更小,更富表现力和更强大的基础。 通过利用生成器,Koa允许您放弃回调并大大提高错误处理能力。 Koa在内核中未捆绑任何中间件,并提供...
一项要求是REST API服务使用Nodejs Express框架提供事件信息。 您将需要添加功能以添加和删除信息以及执行一些查询。 您将处理git事件数据的典型信息,例如存储库,actor,事件类型等。团队提出了一系列要求,包括...
一项要求是REST API服务使用Nodejs Express框架提供事件信息。 您将需要添加功能以添加和删除信息以及执行一些查询。 您将处理git事件数据的典型信息,例如存储库,actor,事件类型等。团队提出了一系列要求,包括...
因为邮箱问题很痛苦2019:6-9〜6-18 请先安装nodejs 10 +,mongodb服务器,nodemon,vue cli 3 说明 admin后台界面 服务器整个项目的服务端 web客户端界面 后台前端 ...http-assert用于错误处理 变
使用 , 和制作的Node.js项目的服务器框架,以实现服务器渲染。 特征 完全没有样式,这是一个仅包含您需要的基本内容的完全裸露的地方 可靠的MVC架构实现 Cron函数可定期执行代码 缓存功能可以保存并发数据,可以...
聊天框 :laptop_computer: 一个基本而强大的聊天Web应用程序,可以使用Socket.IO在多个不同的浏览器之间自动同步学习的概念 :books: 节点JS npm Express框架 套接字 MongoDB Atlas-猫鼬 承诺,异步/等待 错误处理...