Koa开发RESTful接口
Koa中间件
koa-router
const app = new (require('koa'))();
const router = require('koa-Router')();
router.use((ctx, next) => next()
.then(_ => console.log('Success'))
.catch(err => console.error(err.stack))
);
router.get('/:id', ctx => ctx.body = 'Success, this is amazing ' + ctx.params.id);
router.post('/:id', ctx => Promise.reject(new Error('Bad METHOD')));
app.use(router);
app.listen(3000);
koa-body
const Koa = require('koa');
const koaBody = require('koa-body');
const app = new Koa();
app.use(koaBody());
app.use(ctx => {
ctx.body = `Request Body: ${JSON.stringify(ctx.request.body)}`;
});
app.listen(3000);
node index.js
curl -i http://localhost:3000/users -d "name=test"
Output:
输出:
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Content-Length: 29
Date: Wed, 03 May 2017 02:09:44 GMT
Connection: keep-alive
Request Body: {"name":"test"}%
@koa/cors
npm install -S koa-router koa-body @koa/cors
const Koa = require('koa')
const Router = require('koa-router')
const cors = require('@koa/cors')
const Koabody = require('koa-body')
const app = new Koa()
const router = new Router()
router.prefix('/api')
router.get('/', ctx => {
console.log(ctx.request)
ctx.body = 'hello world!'
})
router.get('/api', ctx => {
console.log(ctx.request)
ctx.body = 'hello Api!'
})
router.get('/async', async(ctx) => {
let result = await new Promise((resolve) => {
setTimeout(function() {
resolve('Hello world 2s Later!')
}, 2000)
})
ctx.body = result
})
router.post('/post', async(ctx) => {
let { body } = ctx.body
console.log(body)
console.log(ctx.request)
ctx.body = {
...body
}
})
app.use(cors)
app.use(Koabody)
app.use(router.routes())
.use(router.allowedMethods())
app.listen(3000)