spring boot 请求一个 url 会自动调用另一个的诡异问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
FormatToday
V2EX    Java

spring boot 请求一个 url 会自动调用另一个的诡异问题

  •  
  •   FormatToday
    FormatToday 2022-08-19 12:14:29 +08:00 2724 次点击

    image.png

    调用第二个接口的时候为什么会同时调用第一个接口啊,不是前端写的问题,用 postman 调用也是这样。 求大佬指点一下排查的思路

    16 条回复    2022-08-23 15:05:34 +08:00
    wuvvu
        1
    wuvvu  
       2022-08-19 12:20:32 +08:00
    语义重复
    lllllliiii
        2
    lllllliiii  
       2022-08-19 12:21:39 +08:00
    你 debug 看看`idCode`是啥

    @PathVariable 可能是匹配到了 你加个前缀比如 /getInfo/{idCode}
    yfugibr
        3
    yfugibr  
       2022-08-19 12:34:08 +08:00 via Android
    因为 getRecCompanyLogin 也是一个 string
    ychenenen
        4
    ychenenen  
       2022-08-19 12:34:38 +08:00   1
    {idCode}可以是 getRecCompanyLoginInfo 吧,又都是 get 请求
    yfugibr
        5
    yfugibr  
       2022-08-19 12:39:08 +08:00 via Android
    @yfugibr 就算 idcode 不是 string 应该也会被调用

    接口设计有问题,/aurl 既能匹配 /aurl 也能匹配 /{code}
    我隐约记得这么写编译是会报错的
    willxiang
        6
    willxiang  
       2022-08-19 13:32:34 +08:00
    第一个接口 url 改成 idCode/{idCode}
    nothingistrue
        7
    nothingistrue  
       2022-08-19 13:41:23 +08:00
    /{idCode} 能够匹配任何 /*** 的 URL 。
    lazyfighter
        8
    lazyfighter  
       2022-08-19 13:58:31 +08:00   1
    按照优先级匹配也是第二个接口优先级较高一些, 比较好奇两个接口的执行顺序,
    /**
    * Look up the best-matching handler method for the current request.
    * If multiple matches are found, the best match is selected.
    * @param lookupPath mapping lookup path within the current servlet mapping
    * @param request the current request
    * @return the best-matching handler method, or {@code null} if no match
    * @see #handleMatch(Object, String, HttpServletRequest)
    * @see #handleNoMatch(Set, String, HttpServletRequest)
    */
    @Nullable
    protected HandlerMethod lookupHandlerMethod(String lookupPath, HttpServletRequest request) throws Exception {

    比较好奇楼主用的什么版本的 spirng ,可以看一下这个方法是否调用了
    ConfusedBiscuit
        9
    ConfusedBiscuit  
       2022-08-19 14:06:55 +08:00
    我很好奇如果两个方法同时被调用了,那么 HTTP 请求的返回是哪个方法的结果呢?如果是其中一个方法的返回值,那么另一个方法的返回值就被丢弃了吗?
    zzl22100048
        10
    zzl22100048  
       2022-08-19 14:11:00 +08:00
    spring 正常不会请求一次调用两个路由的,全匹配是调用第二个,其他情况调用第一个,具体是什么版本的 spring ?
    maocat
        11
    maocat  
       2022-08-19 14:15:58 +08:00 via iPhone
    你没有问题,都是框架的问题.dog
    siweipancc
        12
    siweipancc  
       2022-08-19 16:56:03 +08:00 via iPhone
    就算是框架 bug ,debug 不会吗……请求源对比一下
    intmax2147483647
        13
    intmax2147483647  
       2022-08-19 17:21:33 +08:00   1
    有一说一,养成习惯处理一下 IDE 抛黄的警告,会减少你这类问题的提问。`idCode`, `/getRecCompanyLoginInfo`都报警告了都不管
    lichao
        14
    lichao  
       2022-08-19 17:33:36 +08:00
    idCode 可以用正则限制一下
    hyqCrystal
        15
    hyqCrystal  
       2022-08-22 09:27:16 +08:00
    建议写这种风格的时候 可以把路径搞长一点 增加接口名的特殊性
    Huizhen
        16
    Huizhen  
       2022-08-23 15:05:34 +08:00
    第一个 RequestMapping 的 Value 值这样写不严谨,至少加个前缀 /xx/{idCode}
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5585 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 06:31 PVG 14:31 LAX 22:31 JFK 01:31
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86