response.body
支持一下格式,如果 res.status
没有赋值,Koa会自动设置为 200
或 204
。:
const Koa = require('./my-koa')
const fs = require('fs')
const fsPromises = require('fs').promises
const app = new Koa()
app.use(async (ctx, next) => {
ctx.body = 'string'
app.listen(3000, () => {
console.log('server is running on http://localhost:3000')
执行完中间件后,调用一个方法处理 body 并返回给客户端:
const Stream = require('stream')
class Application {
callback() {
const fnMiddleware = this.compose(this.middleware)
const handleRequest = (req, res) => {
const context = this.createContext(req, res)
fnMiddleware(context).then(() => {
respond(context)
}).catch(err => {
res.end(err.message)
return handleRequest
function respond(ctx) {
const body = ctx.body
const res = ctx.res
if (typeof body === 'string') return res.end(body)
if (Buffer.isBuffer(body)) return res.end(body)
if (body instanceof Stream) return body.pipe(res)
if (typeof body === 'number') return res.end(body + '')
if (body !== null && typeof body === 'object') {
const jsonStr = JSON.stringify(body)
return res.end(jsonStr)
res.statusCode = 204
res.end()
module.exports = Application
koa是一个基于node实现的一个新的web框架,它是由express框架的原班人马打造的。它的特点是优雅、简洁、表达力强、自由度高。它更express相比,它是一个更轻量的node框架,因为它所有功能都通过插件实现,这种插拔式的架构设计模式,很符合unix哲学。koa框架现在更新到了2.x版本,本文从零开始,循序渐进,讲解koa2的框架源码结构和实现原理,展示和详解koa2框架源码中的几个最重要的概念,然后手把手教大家亲自实现一个简易的koa2框架,帮助大家学习和更深层次的理解koa2,看完本文以后,再去对照koa2的源码进行查看,相信你的思路将会非常的顺畅。本文所用的框架是koa2,它跟k
最近尝试用了一下Koa,并在此记录一下使用心得。注意:本文是以读者已经了解Generator和Promise为前提在写的,因为单单Generator和Promise都能够写一篇博文来讲解介绍了,所以就不在这里赘述。网上资料很多,可以自行查阅。Koa是Express原班人马打造的一个更小,基于nodejs平台的下一代web开发框架。Koa的精妙之处就在于其使用generator和promise,实现了一种更为有趣的中间件系统,Koa的中间件是一系列generator函数的对象,执行起来有点类似于栈的结构,依次执行。同时也类似于Python的django框架的中间件系统,以前苏千大神做分享的时候把
大家好我是你们的小圆。
经过了之前的学习,我们了解了pipline的基本使用方式,那么我们来一个小的实战,如果之前的文章你还没有看到,可以点击上方的话题,我都收录在了话题中。或者点击下面的链接。
流水线pipeline招式之声明式(前篇)
流水线pipeline招式之声明式(中篇)
流水线pipeline招式之声明式(后篇)
之前jenkins构建的时候,我们完成了一个自由风格的构建,文章我放在这里:
RUN,第一个Jenkins构建
那么,我们可不可以用pipline的方式去实现它,...
这个流程是一个典型的web服务,与其我们使用java或者nodejs来搭建一个web服务器,不如我们就使用python自己的web框架来实现这一目标,减少技术栈的同时,还可以实现代码逻辑的统一,何乐而不为呢?venv跟conda的env很类似,都是用来创建虚拟环境,从而实现不同的环境进行分离的作用。这里的方法体中我们调用了python的f函数来对字符串进行格式化,在内部为了防止web输入端的恶意注入,这里引用了markupsafe的escape方法,可以对输入的字符串进行转义,从而避免了恶意的攻击。
npm install koa-router @types/koa-router -s
koa中间件:用于获取提交数据
npm install koa-bodyparser
const http = require('http');
const request = require('./lib/request');
const response = require('./lib/respons
1. Koa是什么?一个以nodejs为基础的一个后台框架。直白一点来说,就是一个javascript语言需要编写的库,它的定位是作为服务端应用提供服务,本身对外暴露了一...
request pipe 是异步下载图片的,如果需要同步需要添加一个Promisevar myP = new Promise(function (resolve, reject) {
var stream = request(mainItem.pic).pipe(
fs.createWriteStream(filepath)
简介flask是一个轻量级的基于Python的web框架。它没有太多复杂的功能,就像koa,需要一系列的插件来扩展其他功能,被称为microframework。flask没有默认使用的数据库等。其他Python web框架:Django:它比flask重的多。包含了web开发的常用功能,orm、session、form、admin、分页、中间件、信号、缓存、contenttype等等,Django...
1、下载koa2npm install --save koa@2.0.02、引入koa类const Koa = require('koa');创建Koa的实例const app = new Koa();3、使用创建的实例处理异步请求(use方法)app.use(async (ctx, next) => {
ctx.response.type = 'text/html';
ctx.re
在js代码中,如果我们读取数据或者是打印数据,一般是var 或 let 一个变量,再打印出来但是这样的方法需要开辟一个新的内存,来保存这个变量当我们在网页上读取内存较大的文件时(比如视频、图片等),写入写出会极大的占用内存这时候就需要在node.js中提供给我们的流——streamstream可以边读边写,这样就可以更好的不占用太多内存,并且完成所需任务stream分为四种:readable、wr...