你们建webapi会设一个通用接口吗

-一个大坑 2020-07-14 11:26:36
有一个通用接口,查找比较容易,怎么写比较好
会不会多个方法call这个接口,影响性能
...全文
3069 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
正怒月神 版主 2020-07-16
  • 打赏
  • 举报
回复
不过顺带一提, 很多时候,我们的controller会重写其中的方法, 特别是add和edit方法
正怒月神 版主 2020-07-16
  • 打赏
  • 举报
回复
引用 9 楼 -一个大坑 的回复:
就建查和增删改两个通用接口,剩下的都是需要就新建Controller或者在Controller新建方法?
没有问题,想法是正确的。 给你看一下,虽然我这是java的。 UserController,他继承了ApiBaseController ApiBaseController,他继承了ApiSuperBaseController 提供了一个通用的remove方法,当然还有其他的 ApiSuperBaseController,目前的顶级父类Controller 他实现了通用的list,find,findall等等。。。。
wanghui0380 2020-07-15
  • 打赏
  • 举报
回复
至于所谓的外在形式,你知道有很多公司其实是外置ngnix反向代理的,他路由,他映射,他map,他重定向
引用 9 楼 -一个大坑 的回复:
就建查和增删改两个通用接口,剩下的都是需要就新建Controller或者在Controller新建方法?
请理解一下红字的意思。 我们的意思是就算你想弄个通用接口,也不是你认为的要故意去留一个“万能大法” 程序员讲逻辑,不讲形式 这么些年,你们被博客园的各种形式坑的不够多么?(设计模式,petshop,ddd,mvvm,仓储,分层,微服务,AOP),我们不反对那些东西,我们反对不讲逻辑,只套形式 回来你的问题 1.来讲讲现在为啥用ngnix的逻辑,并不是因为我们要统一形式而用他。用它是有逻辑的 a)中台逻辑,小组逻辑。每个小组自己独立构建,那么财务中台在财务系统上,业务中台在业务系统上。外部调用将会折腾出N个url,所以需要统一 b)日志收集,错误收集。各个系统自己的日志在自己机器上,假设访问出错,排查错误,运维调整的从各个系统交叉比对日志,很头疼的,需要集中 2.来讲讲nginx的实现 他路由,他映射,他map,他重定向。 他只做规则转向,输入输出代理,出错日志和环境记录,不做其他任何逻辑处理。而且他前置独立机器,内外隔离 现在回答你原始问题 1.不需要你搞啥万能接口,你业务该怎么写就怎么写。 2.前置一个代理接口,让他给你转向。(手段依旧是map,路由,重定向) 我们的意思很简单,不要因为所谓的形式主义,增加设计复杂度。如果业务需要集中,那么外面加一个集中代理就好。-------这是运维做的事情,而不是程序员做的事情。程序员本身并不会无端去加一个复杂度
-一个大坑 2020-07-15
  • 打赏
  • 举报
回复
引用 6 楼 wanghui0380 的回复:
并不需要纠结外在形式,上面说了逻辑上和工程上,尼都可以知道你不可能搞个撒万能大法(当然万能大法也存在就是ado本身,sql本身,那么这种讨论就没意义了,所谓做项目也就成了写sql) 至于所谓的外在形式,你知道有很多公司其实是外置ngnix反向代理的,他路由,他映射,他map,他重定向 你所谓的统一API其实是被外面包装的,而不是啥我要刻意弄个万能大法
就建查和增删改两个通用接口,剩下的都是需要就新建Controller或者在Controller新建方法?
江湖评谈 2020-07-14
  • 打赏
  • 举报
回复
性能不是问题,coreclr已经优化的非常好了 多个方法调用同一接口,那要考虑的是并发同步等问题了
  • 打赏
  • 举报
回复
没有什么东西是书本上写好了成为“圣经”,然后所有的开发人员都得照着圣经开发的道理。所以你看到任何分析、测试都得基于实践。你不能说明你的设计的稍微深一层的机制,问题就会变很空。
  • 打赏
  • 举报
回复
问题越空越难回答。

那么客户端访问 web 服务器发起一个请求,在 web 服务器就会创建一个对象来并发异步地去处理此请求。那么你到底是纠结“call这个接口,影响性能 ”这里的对象设计和实现里边的具体什么变量呢?什么变量才会让不同的处理对象产生冲突?如果你只要一个“是、不是”的结论来玩味一晚上的话,那么就玩儿“不会”这个字眼儿。但是建议你还是说出稍微深一层的机制、测试,这样提出的问题比较容易回答。
wanghui0380 2020-07-14
  • 打赏
  • 举报
回复
并不需要纠结外在形式,上面说了逻辑上和工程上,尼都可以知道你不可能搞个撒万能大法(当然万能大法也存在就是ado本身,sql本身,那么这种讨论就没意义了,所谓做项目也就成了写sql) 至于所谓的外在形式,你知道有很多公司其实是外置ngnix反向代理的,他路由,他映射,他map,他重定向 你所谓的统一API其实是被外面包装的,而不是啥我要刻意弄个万能大法
wanghui0380 2020-07-14
  • 打赏
  • 举报
回复
说的好像你不需要写代码一样。 难道你们的通用api是传递sql么?如果说他不是sql,那么他就是command,那好跟啥NXXX学给个配置 “command1”:“select * from xxx” 这样么
mirrorspace 2020-07-14
  • 打赏
  • 举报
回复
一个接口一个文件都没有问题 最好是命名时容易记住,接口文档要有,可以用文档生成工具
ying1234 2020-07-14
  • 打赏
  • 举报
回复
用不用一个接口,都一样,多个接口,只要文档写清楚了,还不是一样。就象接口名字是http://www.aaa.com/login/这样的还是http://www.aaa.com/login.ashx这样的,没什么差别。
-一个大坑 2020-07-14
  • 打赏
  • 举报
回复
引用 1 楼 tangyanzhi1111 的回复:
性能不是问题,coreclr已经优化的非常好了 多个方法调用同一接口,那要考虑的是并发同步等问题了
就是高并发问题,现在就是所有用到数据库的都通过webapi,设一个好像不太好,每个方法一个好像也不好

62,039

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧