当前位置:网站首页 > iOS应用开发 > 正文

Web应用开发框架-egg(三)04-基础功能——路由之定义Router、restful风格的URL定义、获取路由参数

Web应用开发框架-egg(三)04-基础功能——路由之定义Router、restful风格的URL定义、获取路由参数

路由

Router 主要用来描述请求 URL 和具体承担执行动作的 Controller 的对应关系, 框架约定了 app/router.js 文件用于统一所有路由规则。

通过统一的配置,我们可以避免路由规则逻辑散落在多个地方,从而出现未知的冲突,集中在一起我们可以更方便的来查看全局的路由规则。

如何定义Router
  • app/router.js 里面定义 URL 路由规则
// app/router.js module.exports = app => { 
    const { 
    router, controller } = app; router.get('/user/:id', controller.user.info); }; 
  • app/controller 目录下面实现 Controller
// app/controller/user.js class UserController extends Controller { 
    async info() { 
    const { 
    ctx } = this; ctx.body = { 
    name: `hello ${ 
     ctx.params.id}`, }; } } 

支持 get,post 等所有 HTTP 方法

  • router.get - GET
  • router.put - PUT
  • router.post - POST
  • router.patch - PATCH
  • router.delete - DELETE
restful风格的URL定义

http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html

如果想通过 RESTful 的方式来定义路由, 我们提供了 app.resources('routerName', 'pathMatch', controller) 快速在一个路径上生成 CRUD 路由结构。

// app/router.js module.exports = app => { 
    const { 
    router, controller } = app; router.resources('/api/user', controller.posts); }; 

上面代码就在 /posts 路径上部署了一组 CRUD 路径结构,对应的 Controller 为 app/controller/posts.js 接下来, 你只需要在 posts.js 里面实现对应的函数就可以了。

在这里插入图片描述

获取参数
// app/router.js module.exports = app => { 
    app.router.get('/search', app.controller.search.index); }; // app/controller/search.js exports.index = async ctx => { 
    ctx.body = `search: ${ 
     ctx.query.name}`; }; 
// app/router.js module.exports = app => { 
    app.router.get('/user/:id/:name', app.controller.user.info); }; // app/controller/user.js exports.info = async ctx => { 
    ctx.body = `user: ${ 
     ctx.params.id}, ${ 
     ctx.params.name}`; }; // curl http://127.0.0.1:7001/user/123/xiaoming 
到此这篇Web应用开发框架-egg(三)04-基础功能——路由之定义Router、restful风格的URL定义、获取路由参数的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • Web应用开发框架-egg(三)06-基础功能——插件之定义插件、编写插件 & 定时任务 & 自定义启动app2024-11-29 17:54:10
  • Web应用开发框架-egg(四)——egg总结之egg快速入门、内置对象、运行环境、config配置、中间件、路由、控制器、服务service、插件、定时任务、自定义启动2024-11-29 17:54:10
  • Web应用开发框架-egg进阶与实战(一)——debug调试步骤、日志之日志路径、日志分类、日志级别、如何打印日志、文件日志级别、日志切割、日志影响性能2024-11-29 17:54:10
  • Web应用开发框架-egg进阶与实战(三)——总结之debug、日志、多进程、错误处理、多实例插件、多进程增强、实战-简易博客2024-11-29 17:54:10
  • ios正式包ipa,发布苹果应用商店App Store2024-11-29 17:54:10
  • Web应用开发框架-egg(三)03-基础功能——中间件之编写中间件、中间件的配置、使用中间件、在框架和插件中使用中间件 & 中间件的通用配置项2024-11-29 17:54:10
  • Web应用开发框架-egg(三)02-基础功能——运行环境 & Config配置之多环境配置、配置写法、配置加载顺序、合并规则、配置结果2024-11-29 17:54:10
  • Web应用开发框架-egg(三)01-基础功能——目录结构的约定之框架规定的目录、内置插件约定的目录 & 内置对象之Application、context、Request & Response等2024-11-29 17:54:10
  • Web应用开发框架-egg(二)——快速入门之模板渲染、编写helper扩展、编写Middleware、渐进式开发 & egg总结2024-11-29 17:54:10
  • Web应用开发框架-egg(一)——Egg入门、Egg与Koa的关系 & 快速入门之编写Controller、静态资源2024-11-29 17:54:10
  • 全屏图片