<commit_before># koa-whistle

koa-whistle为集成[web调试代理工具whistle](https://github.com/avwo/whistle)的koa、koa@2及express的中间件，可以在web服务的开发调试阶段做如下的功能：

1. 查看所有请求服务器的http[s]请求
2. 查看所有服务器内部发出的http[s]、socket请求
3. 操作上述两种请求：mock数据、配置hosts、设置代理、替换请求等，更多功能参见：[whistle](https://github.com/avwo/whistle)


# 安装

	npm i --save-dev koa-whistle

# 使用

koa-whistle中间件支持koa@2、koa@1及express三种常用web框架，三种框架的处理引用的文件有区别以外，其它使用方法都一样：

	// 三种框架的初始化方式
	// koa@2(支持async-await的版本，版本大于 `v2.0.0` 的koa)
	const proxy = require('koa-whistle');
	const Koa = require('koa');
	const app = new Koa();

	// koa@1(支持generator的版本，版本小于 `v2.0.0` 的koa)
	/**
	var proxy = require('koa-whistle/koa');
	var Koa = require('koa');
	var app = new Koa();
	**/
	
	// express
	/**
	var proxy = require('koa-whistle/express');
	var express = require('express');
	var app = express();
	**/

	// 安装中间件
	var serverPort = 6001;
	var proxyPort = serverPort + 10000;
	app.use(proxy({
		name: 'test', // 项目名称，一般为package.json的name字段
		baseDir: 'xxxxxx', // 项目根目录，及package.json所在目录
		serverPory: serverPort, // 服务器监听的端口
		port: proxyPort, // whistle监听的端口
	}));

	// 设置其它中间件
	// koa@2(支持async-await的版本，版本大于 `v2.0.0` 的koa)
	app.use(async (ctx) => {
		ctx.body = 'Hello world!';
	});

	// koa@1(支持generator的版本，版本小于 `v2.0.0` 的koa)
	/**
	app.use(function* (next) => {
		this.body = 'Hello world!';
	});
	**/
	
	// express
	/**
	app.use(function(req, res, next) => {
		res.end('Hello world!');
	});
	**/

	app.listen(serverPort);


按上述方式启动后打开whistle的管理配置界面：[http://127.0.0.1:16001](http://127.0.0.1:16001/)，即可看到访问 `6001` 端口的所有请求。

GIF图<commit_msg>docs: README<commit_after># koa-whistle

koa-whistle为集成[web调试代理工具whistle](https://github.com/avwo/whistle)的koa、koa@2及express的中间件，可以在web服务的开发调试阶段做如下的功能：

1. 查看所有请求服务器的http[s]请求
2. 查看所有服务器内部发出的http[s]、socket请求
3. 操作上述两种请求：mock数据、配置hosts、设置代理、替换请求等，更多功能参见：[whistle](https://github.com/avwo/whistle)


# 安装

	npm i --save-dev koa-whistle

# 使用

koa-whistle中间件支持koa@2、koa@1及express三种常用web框架，三种框架的处理引用的文件有区别以外，其它使用方法都一样：

	// 三种框架的初始化方式
	// koa@2(支持async-await的版本，版本大于 `v2.0.0` 的koa)
	const proxy = require('koa-whistle');
	const Koa = require('koa');
	const app = new Koa();

	// koa@1(支持generator的版本，版本小于 `v2.0.0` 的koa)
	/**
	var proxy = require('koa-whistle/koa');
	var Koa = require('koa');
	var app = new Koa();
	**/
	
	// express
	/**
	var proxy = require('koa-whistle/express');
	var express = require('express');
	var app = express();
	**/

	// 安装中间件
	var serverPort = 6001;
	var proxyPort = serverPort + 10000;
	app.use(proxy({
		name: 'test', // 项目名称，一般为package.json的name字段
		baseDir: 'xxxxxx', // 项目根目录，及package.json所在目录
		serverPory: serverPort, // 服务器监听的端口
		port: proxyPort, // whistle监听的端口
	}));

	// 设置其它中间件
	// koa@2(支持async-await的版本，版本大于 `v2.0.0` 的koa)
	app.use(async (ctx) => {
		ctx.body = 'Hello world!';
	});

	// koa@1(支持generator的版本，版本小于 `v2.0.0` 的koa)
	/**
	app.use(function* (next) => {
		this.body = 'Hello world!';
	});
	**/
	
	// express
	/**
	app.use(function(req, res, next) => {
		res.end('Hello world!');
	});
	**/

	app.listen(serverPort);


按上述方式启动后打开whistle的管理配置界面：[http://127.0.0.1:16001](http://127.0.0.1:16001/)，即可看到访问 `6001` 端口的所有请求。

![koa-whistle](https://raw.githubusercontent.com/avwo/whistleui/master/img/koa-whistle.png)
{'fraction_non_alphanumeric': 0.1932591218305504, 'fraction_numerical': 0.03525046382189239, 'mean_word_length': 4.1025236593059935, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 5, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1479797', 'n_tokens_mistral': 1836, 'n_tokens_neox': 1834, 'n_words': 204}