创建一个中间件
在这一节中,你将了解到如何创建并应用一个中间件。
接口
中间件接口是这样被声明的:
Typescript
export default interface VCLightMiddleware {
process(request: VCLightRequest, response: VCLightResponse, responseContent: VCLightResponse, app: VCLight): Promise<void>;
post(request: VCLightRequest, response: VCLightResponse, responseContent: VCLightResponse, app: VCLight): Promise<void>;
}
这意味着,你需要让你的中间件含有 process
和 post
两个函数。
其中,process
函数中应该包含对请求的处理,post
函数应该包含对请求的处理结束后的处理。需要注意的是,越早被应用的中间件,越早被调用 process
函数,越晚被调用 post
函数。
创建中间件类
中间件类需要满足接口 VCLightMiddleware
。VCLightRequest 和 VCLightResponse 是 VCLight 的请求和响应类。
Typescript
export default interface VCLightMiddleware {
process(request: VCLightRequest, response: VCLightResponse, responseContent: VCLightResponse, app: VCLightApp): Promise<void>;
post(request: VCLightRequest, response: VCLightResponse, responseContent: VCLightResponse, app: VCLightApp): Promise<void>;
}
接下来你可以在两个函数内填写相关代码。
例如,你想在访问 /hello/
时展示 "Hello!",你可以这样做:
Typescript
class ExampleMiddleware implements VCLightMiddleware {
async process(request: VCLightRequest, response: VCLightResponse, responseContent: Response, app: VCLightApp): Promise<void> {
if(url.parse(<string>request.url).pathname == "/hello/") {
responseContent.response = "Hello!";
}
}
async post(request: VCLightRequest, response: VCLightResponse, app: VCLightApp): Promise<void> {
// 我们暂时不需要在这里做什么
}
}
应用实例
要应用这个中间件,我们需要先创建一个中间件实例:
Typescript
const exampleMiddleware = new ExampleMiddleware();
使用 app.use()
来应用中间件实例:
Typescript
app.use(exampleMiddleware);
至此,你已经学会如何创建并应用一个中间件了。