`

Koa优雅的处理404,500

阅读更多

http://www.myfreax.com/koa-404-500-customize-page/

 

Koa由Express团队打造的下一代,更小、更健壮、更富有表现力的 Web 框架,通过组合不同的 generator,可以写同步式的代码,异步式的执行,使得代码更加扁平化,简洁,易于阅读,并极大地提升常用错误处理效率。Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库

在Koa中status的状态码,默认是404,如果status在整个Request/Response周期没有发生变化,那么就意味这个Request就是404,如果在Request/Response周期内改变status,那么status就是200,当然我们不需要显式的改变status,在下面的一写情况中koa就会去更改状态码

this.render('index',{});  
this.send();  
this.body='';  

因此只需要在koa的处理Response之后,发送到浏览器之前的中间件中判断status是否404即可,处理koa自定义404页面

//first 中间件
app.use(function*(next){  
    yield next;
    if(parseInt(this.status) === 404){
       this.body = '404';
    }
})

那么在处理500时候,可以使用try/catch来捕获每个中间件的异常,就可以处理500的错误

app.use(function*(next) {  
    try {
        yield* next;
    } catch (e) {
       this.status = 500;
       this.body = '500';
    }
    if(parseInt(this.status) === 404){
       this.body = '404';
    }
});

测试404很简单,只需要填写一个不存在路由的URI即可,下面测试500情况

const router = require('koa-router')();  
app  
  .use(router.routes())
  .use(router.allowedMethods());

router.get('/', function *(next) {  
    throw new Error('500');
});
分享到:
评论

相关推荐

    基于koa的MVC框架koa-hwtm.zip

    通过组合npm上的优秀模块,该系统已具有的基本功能如下: [1] mvc 架构和优雅的路由,感谢koa-controller [2] 配置文件处理 [3] session 和 cookie 处理 [4] post 字段和文件处理 [5] gzip 开启 [6] 静态服务...

    Node.js的Web框架Koa.zip

    Koa核心不绑定任何中间件,但提供了优雅的一组可以快速和愉悦地编写服务器应用的方法。 示例代码: var koa = require('koa'); var app = koa(); // logger app.use(function *(next){  var start...

    优美:优美地退出服务器(Koa),数据库(MongoMongoose),Redis客户端和作业计划程序(RedisBull)

    正常退出服务器(Koa),数据库(Mongo / Mongoose),Redis客户端,Bree作业计划程序,Bull作业计划程序和自定义处理程序。目录安装 : npm install @ladjs/graceful : yarn add @ladjs/graceful用法当调用...

    MongoDB + Koa2 + JavaScript + Vue

    Koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。开发思路和express差不多,最大的特点就是可以避免异步嵌套。 在数据支持使用的是非关系型数据库MongoDB。

    Koa框架基础快速入门

    Koa是由Express原班人马打造的,致力于成为...koa不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web应用变得得心应手。本教程旨在介绍Koa框架的相关基础知识,能够帮助你快速的上手。Koa

    Node-with-koa2

    使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变...

    koa2-rest-scaffold:Koa2 RESTful API脚手架

    使用node koa框架,也找了一些网上的koa2脚手架,发现并没有一个项目能提供优雅的异常处理,故产生了此项目⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄ 项目运行 直接npm start立即启动启动项目,访问本地主机:7100 / api / ...

    Koa从零搭建到Api实现项目的搭建方法

    Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。 Koa vs Express Koa使用promises和async函数来摆脱回调地狱的应用并简化错误处理。它暴露自己ctx.request和ctx....

    node.js学习笔记之koa框架和简单爬虫练习

    koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。开发思路和express差不多,最大的特点就是可以避免异步嵌套。koa2利用ES7的async/await特性,极大的解决了...

    koa2 从入门到精通(小结)

    koa 发布已经快 6 年的时间,作为继 express 之后 node 服务框架最大... Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。 既然是 web 框架大家一定不陌生,通过启动一个

    node-typescript-koa-rest:使用NodeJS和KOA框架的REST API,打字稿,类验证器。 中间件JWT,CORS,MongoDB数据库,Winston Logger。 Swagger API文档

    通过利用生成器,Koa允许您放弃回调并大大提高错误处理能力。 Koa在内核中未捆绑任何中间件,并提供了一套优雅的方法来使编写服务器变得快速而愉快。 通过Github Actions CI,此样板已部署! 您可以尝试向不同的...

    为什么使用koa2搭建微信第三方公众平台的原因

    koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手,nodejs的天生的异步处理流程,使得它很适合微信公众号这种频繁的消息互动,再加上pm2的多进程管理,可以说...

    利用Node.js+Koa框架实现前后端交互的方法

    koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。 准备工作 首先,我们的服务器需要部署好Nodejs的环境,这里我用Nodejs在windows下的本地服务器来做演

    Node.js的Koa框架上手及MySQL操作指南

    使用 koa 编写 web 应用,通过组合不同的 generator,可以免除重复繁琐的回调函数嵌套,并极大地提升常用错误处理效率。Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变...

    koa-demos.zip_javascript_twicelnm

    Koa 是一个新的 web 框架,由 Express 幕后的... 通过利用 async 函数,Koa 帮你丢弃回调函数,并有力地增强错误处理。 Koa 并没有捆绑任何中间件, 而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。

    koa-guide:koa guide中文是什么意思

    Koa 不在内核方法中绑定任何中间件,它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手。 安装 koa Koa需要支持ES2015和async function的node v7.6.0或更高版本。 您可以使用喜欢的依赖管理工具快速...

    node-typescript-koa-rest:使用NodeJS和KOA2(打字稿)的REST API样板。 日志记录和JWT作为中间件。 带有类验证器,SQL CRUD的TypeORM。 包括Docker。 大量的文档,动作CI和有价值的自述文件

    通过利用生成器,Koa允许您放弃回调并大大提高错误处理能力。 Koa在内核中未捆绑任何中间件,并提供了一套优雅的方法来使编写服务器变得快速而愉快。 通过Github Actions CI,此样板已部署! 您可以尝试向不同的...

    程序员面试刷题的书哪个好-koa-self:koa-self

    而是提供了一套优雅的方法,帮助您快速而愉快地编写服务端应用程序。 安装 Koa 依赖 node v7.6.0 或 ES2015及更高版本和 async 方法支持. 你可以使用自己喜欢的版本管理器快速安装支持的 node 版本: nvm install 7 ...

    TodoList:一款基于 TS + React + AntD + Koa + MongoDB 实现的 TodoList 全栈应用

    基于 TS + React + AntD + Koa + MongoDB 实现的 TodoList 全栈应用应用特点前后端均用 TypeScript 编写接口统一遵循 RESTful 风格实现服务端的优雅错误处理技术栈语言TypeScript(赋予 JS 强类型语言的特性)前端...

    详解koa2学习中使用 async 、await、promise解决异步的问题

    这三个东西 可以优雅的解决异步问题。在学习koa2的时候遇到了获取数据后再进行模板渲染的异步问题。在查找各种资料后成功的解决了该问题,现在写个笔记记录一下。 先说一下async、await,第一次见到这两个词是在学习...

Global site tag (gtag.js) - Google Analytics