adonisjs路由、请求与响应——node.js应用第一季03

版权声明:原创文章,未经博主同意,不得擅自转载! https://blog.csdn.net/qq_36718999/article/details/82317271

1.route(get,post,patch,delete)

//routes.js
const Route = use('Route')

Route.on('/').render('welcome')
// Route.get('/hello',({request})=>{
//   return `'hello ~' ${request.input('name')}`
// })
// Route.get('/hello','HelloController.render')
// Route.get('/posts','PostController.index')
// Route.post('/posts', 'PostController.store')
// Route.get('/posts/create','PostController.create')
// Route.get('posts/:id','PostController.show')
//
// Route.patch('posts/:id','PostController.update')
//
// Route.delete('posts/:id?','PostController.destory')
//
//
//
// Route.get('/posts/:id/edit','PostController.edit')

2.route.resource(资源路由、路由命名、请求路由的格式fomat、路由群组)

// Route.resource('posts','PostController')//资源路由
//      // .apiOnly()//去掉创建、编辑的路由 返回404
//      // .only(['index','show'])//指定处理的路由  其他路由返回404
//         .except(['index'])//不包含某路由
//
// // Route.get('/users', ()=>'list of users')
// //       .as('users.index')  //命名路由,资源路由会自动生成 对应的控制器方法 如posts.show
//
//
// Route.get('/users',({request}) => {
//   switch (request.format()) {//判断请求路由的格式
//     case 'json':
//       return[
//         {name:'xiaoyang'},
//         {name:'xiaoxue'}
//       ]
//
//       break;
//     default:
//     return `
//          - xiaoyang
//          - xiaoxue
//     `
//
//   }
// })
// // .formats(['json'])//设置路由支持的格式
// .formats(['json','html'],true)//设置路由支持的格式,true限定请求的格式
//
// Route.group(()=>{  //路由群组  定义设置具有相同特性额路由
//   Route.get('/users',()=>'manage users')
//   Route.get('/posts',()=>'manage posts')
// })
// .prefix('admin')//设置共同的地址前缀
//
// Route.any('*',({view})=>view.render('welcome'))

//html中使用命名路由
//    {{-- 使用路由名字 --}}
   // <a style="color:#fff;" href="{{route('users.index')}}">list of users</a>

3.获取地址参数、请求数据、头部信息

// Route.get('/posts',({request})=>{
//   console.log(request.get());// 得到地址中的参数
// })

// Route.post('/posts',({request}) =>request.post())//得到客户端发送的data
// Route.post('/posts',({request}) =>request.all())//得到客户端发送的data 以及地址中的参数
// Route.post('/posts',({request}) =>request.only(['title','content']))//得到客户端发送的data及地址参数中部分数据
// Route.post('/posts',({request}) =>request.except(['title','content']))//不想得到客户端发送的data中部分数据
// Route.post('/posts',({request}) =>request.input("status","draft"))//得到客户端发送的data中指定数据,若没有则默认为draft

// Route.post('/posts',({request}) =>request.collect(['title','content']))//得到客户端发送的表单数据  一种集合的数据
//
// Route.get('/posts',({request})=>request.headers())//获取请求头部信息
// Route.get('/posts',({request})=>request.header('user-agent'))//获取请求头部某个信息
// Route.get('/posts',({response})=>{
//   response.header('Content-type','text/plain')//设置返回的数据为纯文本格式
//   // response.type('text/plain')
//   return '<h1>posts list </h1>'  //默认 以text/html 返回
// })
// Route.get('/posts',({request,response})=>{
//   // return request.headers()//获取请求头部信息
//   response.cookie('theme','dark')//设置返回cookie的属性值
//   response.clearCookie('theme')//删除cookie值
//   // return request.cookies()//返回cookies中值
//   return request.cookie('theme','lingt')//返回cookies中某个值,若不存在,就为lingt
// })


//注意 kernel.js app.js 的配置
// const globalMiddleware = [
//   'Adonis/Middleware/BodyParser',//处理请求数据
//   'Adonis/Middleware/Session',
//   // 'Adonis/Middleware/Shield',
//   'Adonis/Middleware/AuthInit'
// ]
//
// const providers = [
//   '@adonisjs/framework/providers/AppProvider',
//   '@adonisjs/framework/providers/ViewProvider',
//   '@adonisjs/lucid/providers/LucidProvider',
//   '@adonisjs/bodyparser/providers/BodyParserProvider',
//   '@adonisjs/cors/providers/CorsProvider',
//   '@adonisjs/shield/providers/ShieldProvider',
//   '@adonisjs/session/providers/SessionProvider',
//   '@adonisjs/auth/providers/AuthProvider'
// ]

4.请求响应、异步响应、重定向

// Route.get('/posts',({response})=>{
//   // response.send('list of posts')//响应 返回数据信息
//   // return 'list of posts'  //或者return
//   return {             //服务端自动将返回的 对象 数组 以json格式 返回  客户端
//     time:"231",
//     name:"asf"
//   }
// })
//
//
// 异步响应  例如 先查询数据库 再返回响应
// const delay =(data,time) =>{   //模拟异步操作
//   return new Promise((resolve,reject)=>{
//     setTimeout(()=>{
//       resolve(data)
//     },time)
//   })
// }
//
// Route.get('/posts',async ({response}) =>{  //async 表示包含异步操作
//   const data = await delay(          //await 表示等一会
//     'list of posts yibu',
//     3000
//   )
//   return data
// })
// 重定向 方式一 redirect
// Route.get('/list-of-posts',({response}) =>{
//   // response.redirect('/posts')   //重定向
//   // response.redirect('/posts',true)   //重定向 并携带查询参数
//   response.redirect('/posts',true,301)   //重定向 并携带查询参数 状态码为301
// })
// Route.get('/posts',() =>{
//   return 'list of posts redirect'
// })
// 重定向 方式二  route 使用路由名字
Route.get('/list-of-posts',({response}) =>{
response.route('list-of-posts')  //使用路由名 实现重定向
})
Route.get('/list-of-food-posts',({response}) =>{
response.route('list-of-posts',{category:'food'})//使用路由名 实现重定向 并携带参数
})
Route.get('/posts/:category',({params}) =>{
  return `list of posts route ${params.category || 'default'}`
})
.as('list-of-posts')

猜你喜欢

转载自blog.csdn.net/qq_36718999/article/details/82317271
今日推荐