基于REST风格的前后端分离的Web服务架构的.NET Framework实现第8讲《路由设计篇》

本文深入探讨微服务架构下,使用Java与.NET实现路由配置的两种方法:通过WebApiConfig.cs文件配置全局路由,以及在Controllers中添加注解实现细粒度路由。通过实例演示如何灵活配置路由,以满足不同项目需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

       这是我这个讲座的最后一讲了,整个讲座差不多写了2个多星期,还是挺有成就感的,毕竟以前都没有像这样写过博客,各种技术方案文档和项目管理文档倒是写呢挺多的。可能我这个讲座写呢也不算太好,所以还望各位技术达人或者各位技术大牛,要是有幸看到我的这个讲座的话,多提提宝贵意见。

       现在微服务架构的模式,感觉用Java语言来实现的比较多一些,但是我觉得微软的这个实现的解决方案也是有其可取之处的,毕竟存在即为合理。在实际的项目过程中,能够选择合适的技术,合适的平台把业务需求实现出来,把项目做好,这个才是最重要的。但凡是有经验的程序员或者是项目管理者,都不应该拘泥于某种技术,而是应该根据项目团队,根据项目的特性来合理的选择适合的技术、架构和解决方案,这样对项目本身而言,才是有利的。

       我们最后这一讲,具体说一下我们实现出来的这个项目的路由是怎么配置的,这样大家在实际项目中,就可以灵活的配置所需的路由。毕竟条条大路通罗马,多几条路可走,对项目来说,也算是好的一面吧。

       这里,我只讲两种路由的配置方式。

       1.在WebApiConfig.cs文件中配置路由

       首先看一下WebApiConfig.cs这个文件的代码是什么样子的,路由配置主要是在MapHttpRoute这个方法里面实现的,这里我只是重点讲解一下routeTemplate,其他的部分,就请自行查阅资料去了解吧。

       我这里使用的是routeTemplate的默认配置,其实,只要跟踪进去MapHttpRoute这个方法里面,就可以看到其他的配置情况了。这里的api是可以自行修改的,可以改成自己所需的名称。后面的{controller}、{action}、{id}都是关键字,不能够改变,但是可以减少,比如说可以改成"api/{controller}/{action}"。这里的配置和我们的Controllers类是一致的,前端ajax访问,也是根据这个配置的路径来访问的。

       我们先看Controllers类的代码。这里的代码,之前我们都实现过,这里就不展开了。我们要注意的是,前面的{controller}对应的是这里的UserInfo,也就是UserInfoController去掉后面的Controller,只要前面的UserInfo,这体现了约定优于配置的设计理念。然后,{action}对应的是我们这里具体暴露出来的接口方法名称,比如说getUserInfoes这个方法。{id}对应的是传输的参数,也就是getUserInfoByID(int id)方法中的参数int id。

       前端访问的话,完整的路由路径就是:

       url: "http://localhost:8802/api/UserInfo/getUserInfoes/"

       url: "http://localhost:8802/api/UserInfo/getUserInfoByID/" + $("#id").val()

       2.在Controllers中添加注解来实现路由

       通过在Controllers中添加注解的方式来实现路由的话,可以比较灵活的配置路由,而且可以根据每个不同的Controller,以及Controllers中每个不同的方法,都可以配置不同的路由。这种方式实现的路由,属于的细粒度方式。还是先看看WebApiConfig.cs中的代码是什么样子的,这里我使用的是另外一个项目的代码,只是为了说明这种方式的路由该怎么配置,也出于不破坏我们这个讲座中的项目的考虑。

       这种方式配置路由的话,需要删除或者注释掉WebApiConfig.cs中的config.Routes.MapHttpRoute这一段代码,然后在Controllers中添加注解来实现路由。我们再来看看Controllers中的代码是怎么实现的。

       首先需要在AccrController这个类上面添加[RoutePrefix("yna/accr")]这个注解,来实现{controller}的配置,这里的controller是accr,yna相当于前面的api。然后在方法上面添加[Route("GetEmployees")]来实现{action}的配置,这里还可以对传递的参数进行更加细致的配置,也就是可以指定传递的参数的数据类型。配置完成后,前端访问的话,完整的路由路径就是:

       url: "http://localhost:8802/yna/accr/GetEmployees/"

       url: "http://localhost:8802/yna/accr/GetCardById/" + $("#id").val()

       到这里为止,路由方面的设计就简单的讲述完毕了。同时,我的这个系列的讲座,也算是圆满的完成了。我在这个讲座当中实现的项目,如果大家需要源代码的话,那就联系我吧。我的这个项目,只算是起到一个抛砖引玉的作用,毕竟实际的项目,肯定是比这个复杂很多的。学习IT的知识,还是需要多实践,然后多找寻问题的解决方法,做的东西多了,经验和能力也就慢慢的得到提高了。在实际的项目当中,问题绝对会超过你的想象,我们不可能是无所不能的全才,所以一定要懂得遇到问题的时候,去网络上搜索自己需要的答案或者是解决方案。不要去重复造轮子,也不要去试图记忆那些死板的技术实现的过程,我们的大脑,应该多做一些创造性的任务才对,记忆的过程,应该留给电脑去处理,毕竟这个是电脑的特长。

       写了这么多,也算是为大家传递一些我个人的项目经验和技术上可能会遇到的问题,应该怎么解决的我的一些看法。IT这个领域,只能是不断的学习,不断的提高,否则就如同逆水行舟,不进则退了。不要怕在实际项目中遇到的种种问题,我们IT人员的存在,不正是去解决这些纷繁复杂的问题吗。所以,要有一颗勇敢的心,更要有一颗平静的心,这样在遇到我们力所不能及的问题的时候,才不至于把我们吓到。只有不被问题本身所吓到,才能去积极的寻求问题的答案或者问题的解决方案。总之一句话,我们IT人,只能毫无畏惧的努力向前,在IT的前进道路上,我们一直在努力,从未敢放弃。

       源代码地址:https://github.com/SuroChen/RestDemo,需要的同学可以自行前往下载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奕澄羽邦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值