HTTP的起始行给出了请求类型,也被称为:请求方法。目前的请求方法:
GET POST PUT DELETE OPTIONS TRACE HEAD PATCH
最常用的是前面5个。对于每个请求类型,router中都有同名但是小写的函数进行路由挂载。为了方便调用,在初始化app后,可以使用app上同名的快捷调用。(框架层面仅支持这些。)
示例:
'use strict';
const titbit = require('titibit');
var app = new titbit({
debug: true
});
app.get('/', async c => {
c.res.body = 'success';
});
app.get('/p', async c => {
c.res.body = `${c.method} ${c.routepath}`;
});
app.post('/', async c => {
//返回上传的数据
c.res.body = c.body;
});
app.put('/p', async c => {
c.res.body = {
method : c.method,
body : c.body,
query : c.query
};
});
//默认监听0.0.0.0,参数和原生接口listen一致。
app.run(8080);
'use strict';
const titbit = require('titbit');
var app = new titbit();
var {router} = app;
router.get('/q', async c => {
//URL中?后面的查询字符串解析到query中。
c.res.body = c.query; //返回JSON文本,主要区别在于header中content-type为text/json
});
router.post('/p', async c => {
//POST、PUT提交的数据保存到body,如果是表单则会自动解析,否则只是保存原始文本值,
//可以使用中间件处理各种数据。
c.res.body = c.body;
});
app.run(2019);
send函数就是对c.res.body的包装,其实就是设置了c.res.body的值。并且支持第二个参数,作为状态码,默认为200。
app.get('/', async c => {
c.send('success')
})
app.get('/randerr', async c => {
let n = parseInt(Math.random() * 10)
if (n >= 5) {
c.send('success')
} else {
//返回404状态码
/*
等效于:
c.status(404)
c.res.body = 'not found'
*/
c.send('not found', 404)
}
})
app.run(1234)
app.get('/:name/:id', async c => {
//使用:表示路由参数,请求参数被解析到c.param
let username = c.param.name;
let uid = c.param.id;
c.res.body = `${username} ${id}`;
});
app.run(8000);
* 表示任意路径,但是必须出现在路由最后。
app.get('/static/*', async c => {
//*表示的任意路径解析到c.param.starPath
let spath = c.param.starPath
c.send(spath)
})