springboot 怎么在 controller 上注解让不同的 url 支持不同的 method?

2020-11-13 18:43:11 +08:00
 noble4cc

比如 url1 需要只支持 POST url2 只支持 GET 两个 url 映射到一个方法上,有什么好的方式,如果使用 RequestMapping 分别写两个 url 和 method,会产生四种组合感觉不是太好

老项目做 restful 改造,兼容老的,照顾新的确实很麻烦

2550 次点击
所在节点    Java
16 条回复
chendy
2020-11-13 19:09:40 +08:00
@ GetMapping("url1")
@ PostMapping("url2")
public void method(){
}

不知道是不是这个意思
(为了不艾特到人加了个空格)
/t/724499 可能不是 java 的锅应该是项目的锅)
noble4cc
2020-11-13 20:09:02 +08:00
好像不行老哥,你可以试下,最终只能用一个 url
LGA1150
2020-11-13 20:18:56 +08:00
写两个 method,method2 直接调用 method1
tangkaichuan
2020-11-13 20:45:18 +08:00
把内容用 service 装起来,多个 controller 调同一个 service
ChanKc
2020-11-13 21:01:56 +08:00
抽象类写方法实现,然后用两个 controller 分别继承,调用 super
xgfan
2020-11-13 21:06:26 +08:00
????上面都是不看文档瞎答的吗

@RequestMapping(value = {"hello","world"},method = {RequestMethod.GET,RequestMethod.POST})
xuanbg
2020-11-13 21:38:15 +08:00
6 楼是对的,但换我做这个事情,才不来写 @RequestMapping(value = {"hello","world"},method = {RequestMethod.GET,RequestMethod.POST})这种奇怪的代码。

写两个 Controller,一个是旧版本兼容的,一个是船新的。不过这两个 Controller 都调用同一个 service 。这个代码结构新旧分明好维护好扩展。
wangsongyan
2020-11-13 21:44:17 +08:00
@xgfan 代码运行没问题,但没达到楼主想要的效果
jwenjian
2020-11-13 22:11:36 +08:00
(只)支持
hand515
2020-11-13 22:18:30 +08:00
@xuanbg 只支持,你这没用,还是要两个方法
dengshen
2020-11-13 22:38:59 +08:00
@requestmapping 不写具体的请求方式的话应该是支持所有的 http 请求
baozijun
2020-11-13 23:07:38 +08:00
一个新 controller 即可,分装不同的 service
noble4cc
2020-11-14 10:56:14 +08:00
@LGA1150 现在就是这么搞的,但是像打补丁有点恶心
noble4cc
2020-11-14 10:56:55 +08:00
@ChanKc 这样成本太高,改动太大了
noble4cc
2020-11-14 10:58:45 +08:00
@xuanbg 这种我现在就是这么干的,但是会组合出四种请求方式,不太规范但是可以跑
THESDZ
2020-11-16 14:15:03 +08:00
1.新老应该隔离开不同的入口
2.老的应该打上 过时 标记

不要为了兼容而搞奇奇怪怪的代码啊,后面的人怎么接手啊,哦,完成任务就行,那没事了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/724978

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX