`

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 examples koa官方例子

    在这个“Koa官方例子”中,我们涵盖了多个关键功能模块,包括Cookie管理、错误处理、Flash消息、文件上传、模板渲染以及会话管理。这些例子深入浅出地展示了Koa的强大和易用性。 1. **Cookie管理**: Koa通过内置...

    koa给前端发送请求,定义中间件处理请求并使用

    本篇将详细介绍如何使用Koa来为前端发送请求,并定义中间件来处理这些请求。 首先,让我们了解Koa的基本概念。Koa的核心是其中间件机制,它采用了洋葱模型,即请求会逐层穿透中间件,直到被某个中间件处理后返回...

    koa2-note, 《Koa2进阶学习笔记》持续更新....zip

    Koa2提供了优雅的错误处理方式。通过在中间件中抛出错误或使用`throw new Error()`,Koa2会自动捕获并提供统一的错误处理。可以在应用的最后添加一个专门的错误处理中间件: ```javascript app.use(async (ctx, ...

    koa框架文件上传.zip

    在Node.js环境中,Koa框架是一个现代化的web应用框架,由Express团队的成员创建,它提供了更简洁、更优雅的方式来处理HTTP请求和响应。Koa的主要目标是提供更好的中间件系统和异常处理,使得开发过程更为高效。在这...

    node_koa_cli

    2. 异常处理:Koa提供了一种优雅的方式来处理错误,通过返回Promise或者使用try-catch块,可以在中间件中捕获并处理异常,避免程序崩溃。 3. 响应与请求对象:Koa为每个请求和响应提供了强大的对象,如ctx.request和...

    koa后台框架,koa2后台框架

    KOA 是一个由 Express 团队开发的基于 Node.js 的轻量级、模块化的Web应用框架,它的设计目的是为了构建更优雅、更可读的服务器端应用。KOA2 是 Koa 的第二个主要版本,它引入了一些重要的改进和优化,进一步提升了...

    Nodejs koa

    Koa,则是 Node.js 生态系统中的一个轻量级、高效率的 Web 框架,由 Express 的核心团队成员开发,旨在提供更优雅的异步错误处理和中间件系统。 Koa 的核心设计理念是减少样板代码并强调使用上下文对象(`ctx`)来...

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

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

    关于koa2框架的简单使用, 以及连接mysql数据库

    Koa2 基于 ES6 的 async/await 特性,使得异步处理变得更加直观,避免了回调地狱的问题。Koa2 不包含任何中间件,而是通过提供一个简单的上下文(ctx)对象和请求/响应对来实现中间件的串联,这种设计让开发者可以...

    前端开源库-koa-json

    Koa 是一个由 Express 团队开发的现代 Node.js web 应用框架,它旨在提供更简洁、更优雅的 API,帮助开发者构建高效的 web 应用。在 Koa 的生态系统中,有许多中间件可供选择,以增强其功能。其中之一就是 `koa-json...

    前端开源库-koa-jade

    Koa本身是一个由Express团队开发的下一代Web应用框架,它简化了HTTP服务器的创建,并提供了更优雅的异步错误处理方式。而Koa Jade中间件则将这种优雅带入了模板渲染过程。 **Pug:简洁且强大的模板语言** Pug,...

    使用nodejs的koa框架连接MongoDB数据库.zip

    在Node.js环境中,Koa是基于ExpressJS之上构建的一个现代化的Web应用框架,它提供了更加简洁、优雅的方式来处理HTTP请求和响应。MongoDB则是一种流行的NoSQL数据库,以JSON格式的文档存储数据,广泛用于非结构化数据...

    koa 中文文档

    Koa 不包含任何中间件,但它提供了一个优雅的方式来组织和使用中间件,使得开发过程更为高效。 ### Koa 的核心特性 1. **中间件机制**:Koa 使用了基于洋葱模型的中间件系统,每个中间件可以读取、修改请求和响应...

    基于koa2 微信小程序项目

    Koa2是Node.js的一个现代化Web应用框架,它由Express团队的成员开发,提供了更简洁、更优雅的API设计,使得开发者能够更高效地构建Web服务。 **Koa2 框架基础** 1. **中间件机制**:Koa2的核心是其中间件系统,它...

    Node.js-koa2和node.js搭建的一条RESTfulapiserver端脚手架

    Koa2 提供了一种优雅的方式来组织和构建 Web 应用,其核心特性包括: 1. **中间件机制**:Koa2 使用洋葱模型的中间件,每个中间件可以读取、修改请求和响应对象,或者将控制权传递给下一个中间件。这种模式简化了...

    Koa框架教程

    Koa 是一个由 Express 团队开发的现代化的 Node.js Web 应用框架,它设计的目标是使服务器端的 JavaScript 更加优雅、简洁。Koa 使用了 ES6 的 async/await 特性,使得异步处理更加直观,避免了回调函数的嵌套地狱。...

    前端开源库-koa-i18n

    Koa 是由 Express 团队成员创建的一个现代化的 JavaScript web 开发框架,它使用 ES6 的特性,如 async/await,使得编写中间件变得更加简洁和优雅。Koa 并不包含任何默认的路由或视图系统,而是允许开发者根据需求...

    前端开源库-koa-rewrite-75lb

    Koa 是由 Express 团队开发的一个下一代 Node.js Web 应用框架,它构建在原生的 `http` 模块之上,提供了更优雅的异步控制流,使得编写服务端代码更加简洁。Koa 的核心特性包括上下文(Context)和中间件,其中...

    一个基于koa和react开发Web聊天应用

    2. **错误处理**:Koa提供了一种优雅的方式来处理错误,可以避免回调地狱。在中间件中,如果发生错误,可以直接通过`throw new Error()`抛出,Koa会捕获并处理这些错误。 3. **async/await支持**:Koa原生支持ES6的...

    Node.js的Web框架Koa.zip

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

Global site tag (gtag.js) - Google Analytics