<head>/<head><body>
看了 文章,相信大家动手实践后都能在浏览器中看到Hello World了。下面我们进行更深入的学习。不用担心,koa框架优雅而简便,相信你很快就能上手。
0.Context对象
先来看看前面实现的代码:
koa框架给我们提供了一个Context对象,这个对象封装了用户访问我们helloWordApp后端服务的http请求和http响应。这就意味着,我们可以加工处理这个对象,以此来控制返回给用户的内容(即http响应)。而ctx变量就被默认代表这个Context对象。典型的模式如下(先理解Context的内容,await next会在下一篇文章中详细介绍,也是关于中间件的内容,是Koa的核心!):
1.Context的Request对象
Koa框架的Context对象提供了一个Request对象,Request对象提供了一系列非常有用的方法来处理Http请求。其实进一步了解的话你会发现,Koa框架里的http请求是对node中http模块的IncomingMessage的封装。可以看看下面这个例子,即客户端请求是否支持xml:
2.Context的Response对象
Koa框架的Context对象还提供了一个Response对象,同样,这个Response对象提供了一系列有用的方法来加工操作http响应。同样,深入了解的话它是对node中http模块的 ServerResponse 的封装。下面这个例子就是一个利用Response对象给响应中写入一个文件流的示例:
3.Contex别名(简写形式)
Context对象也提供了对于这些处理方法的简写形式:
那么,可能有人要问了,我怎么知道有哪些简写形式呢?你可以收藏这篇文章,看下图即可。
4.深入了解
这里需要深入说一下,Koa对于Node的http请求和响应的封装并不是简单的扩展,而是提供了一套简洁干净的接口,同时减少了不同中间件之间的冲突(中间件下次重点详细讲,是Koa的核心)。同时,Koa对于流的处理也提供了很好的支持。但这并不代表Node中http模块的原生IncomingMessage和ServerResponse不能使用。你可以用Context的req属性来引用IncomingMessage,用Context的res来引用ServerResponse。
5.总结
这次我们主要了解学习了Context对象,学习什么是Context,Context的两个对象及其处理Http请求和响应的方法,以及这些方法的简写形式,最后我们还深入了解了一下Koa。Context是在Koa中间件中进行传递的,对于我们后面理解中间件较重要。欢迎关注本号,学习Koa更多干货内容。也欢迎分享文章,让更多的朋友能共同学习提高。
閱讀更多 科技撩 的文章