关于node.js:让nodejs开启服务更简单koa篇
在nodejs原始的http模块中,开启一个服务编码绝对麻烦,须要对申请形式及上传的数据进行各种判断,而koa给咱们提供了比拟便捷的编码方式,同时它还有很多中间件能够间接拿来应用。 首先来看,如何开启一个服务,装置koa,引入Koa构造函数,通过new来创立koa的实例对象,监听8000端口,通过use来解决客户端的申请,use解决的中间件有两个参数,ctx示意上下文,request和response都在ctx中,next示意执行下一个匹配的中间件。以下代码示意当申请形式为get时,响应后果hello world const Koa = require('koa')const app = new Koa()app.use((ctx, next)=>{ if(ctx.request.method === 'GET'){ ctx.response.body = 'hello world' }})app.listen(8000, ()=>{ console.log('8000端口启动') }) koa自身比拟轻量,很多两头库都没有集成在koa外部,须要装置其余的库能力应用,首先罕用的就是 koa-router,router 能够自定义路由,可通过get / post 等办法间接调用 const Koa = require('koa')const app = new Koa()const Router = require('koa-router')const userRouter = new Router({ prefix: '/user' })app.use((ctx, next) => { next()})userRouter.post('/', (ctx, next)=>{ ctx.response.body = 'post申请'})app.use(userRouter.routes())app.listen(8000, () => { console.log('8000端口启动') }) 在get、post或者其余申请中,通常会携带一些参数,而参数对于咱们接管申请返回响应也是十分重要的,get申请的参数通常有两种,分为query和params,query的形式是在url前面拼接问号和键值对的参数,相似于/user?name=kiki,params是在斜线前面增加参数,相似于 /user/1,这个数字1就是不固定的,能够由客户端传递的值,在koa-router中,都能够间接通过ctx.request对象中获取 const Koa = require('koa')const app = new Koa()const Router = require('koa-router')const userRouter = new Router({ prefix: '/user' })app.use((ctx, next) => { next()})userRouter.get('/:id', (ctx, next)=>{ ctx.response.body = { query: ctx.request.query, params: ctx.request.params }})app.use(userRouter.routes())app.listen(8000, () => { console.log('8000端口启动') }) ...