1
boris93 2020-11-14 18:03:25 +08:00 via Android 1
做起来不就是
switch(method) { case "methodA": doMethodA(); break; case "methodB": doMethodB();break; default: fxxkItUp();break; } 这种好像有点像过去 WebService 那种?一个 endpoint,请求里面带方法名这种操作。 现在应该是很不推荐这种做法了吧。 调你们接口的方式,你们说话管用那就按你们的办法来,不然就听他们的呗。什么是规范?谁说话好使谁就是规范。 |
2
chinvo 2020-11-14 18:11:21 +08:00 via iPhone
也可能是网关处理的
|
3
PHPer233 2020-11-14 18:23:29 +08:00 via Android
我见过这样的代码,就像一楼回复的那样执行相应的流程。
|
4
luob 2020-11-14 18:30:02 +08:00 2
graphql 直呼内行。
如果你试过手撸一个 web 框架会发现,这种编程式路由简单粗暴, 不用乱翻 http 各种标准一条条往上套,不用折腾来折腾去那一串乱七八糟的 url, 实现起来比 restful 那一套简单多了。 |
5
DarkCat123 2020-11-14 18:30:24 +08:00
mapping func.
type HandleFunc func( handerRequest) ( response , err ); act := make( map[string]HandleFunc); return act[ methodRequest]; |
6
tesguest123 2020-11-14 18:39:33 +08:00 via Android
概括下就是通过 type 参数判断,if else if. else''
|
7
zliea 2020-11-14 19:15:44 +08:00
封装一个接口一个统一的入口方法,一个注解(功能号)。每个功能的 Service 实现这个接口,同时在 Service 上带上注解。
在程序初始化时把这些 service 放到 Map<功能号, service>,然后入口处解析到功能号然后调用入口方法。 PS. 我会把功能号放到 url 里。 |
8
dustinth 2020-11-14 19:29:55 +08:00
本质上和实现上没有区别, 只是 API 的表现方式不一样: 是把路由规则放到 http 规范层面还是放到业务层面. 做的好的, 切换两种方式可能就是一两行代码的事情.
|
9
mazyi 2020-11-14 22:03:36 +08:00 via iPhone
restful 的目的是规范,随便换一个人马上可以撸一套新的,这个嘛就是相反
|
10
VANHOR 2020-11-14 22:20:18 +08:00
饿了么的接口就是这样的。
|
11
hdfg159 2020-11-14 22:22:50 +08:00 via Android
就 if else,这思想就是消息分发器的思想,平时用地址区分那是 web 框架做好了
|
12
PopRain 2020-11-15 00:13:28 +08:00 via Android
有点像强类型和弱类型的调用,我还是喜欢有明确的方法(强类型)
|
13
namelosw 2020-11-15 00:20:30 +08:00
你要拿 REST 当规范的话, 这个不算 REST. REST 里面 POST 是用来创建资源的. 如果想 REST, 就要设计更多资源, 而不是更多的 verb 或者 method, 区别和这个挺大的.
本质上这个 diapatch 的方式是模拟 RPC, 方法+参数其实就是模拟一个远程的函数. 不过我觉得到没有太大问题, 就是团队达成一致就行. 还有就是不同情况返回值的类型要处理好就行. |
14
Elissa 2020-11-15 01:29:40 +08:00
艹,这说的不就是我吗,野路子后端,php 写个 gateway.php ,接收 type 和 action,再用 switch 去分不同的业务接口
|