SpringBoot 踩坑笔记(二)

本文详细解析了一个关于RESTful接口映射的常见错误,即所有不存在的接口请求被错误地转发到了一个存在的地址。通过对比标准写法@RestController与@RequestMapping,揭示了问题根源,并解释了RestController源码注释中关于逻辑组件名称建议的重要性。

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

最近在做项目的时候,发现一些不存在的接口,经常会被转发到一个特定的地址(我这里被转发的是:"/api/v1/sendgrid",这个地址在项目是存在的)

然后我打开了对应的controller,刚开始始终没有发现问题:

/**
 * @author xxxx
 * @since 2020/4/21 17:24 sendgrid邮件控制器
 */
@RestController("/api/v1/sendgrid")
public class SendGridController {

    @Autowired
    private ISendGridService sendGridService;

    @PostMapping
    public BaseResult<Object> sendMail(@RequestBody MailRequestForm requestForm) {
        return sendGridService.sendMail(requestForm);
    }
}

经过对比发现,原来是@RestController("/api/v1/sendgrid")出现了问题,一般的写法是

@RestController
@RequestMapping("/api/v1/sendgrid")

RestController源码注释:

    /**
     * The value may indicate a suggestion for a logical component name,
     * to be turned into a Spring bean in case of an autodetected component.
     * @return the suggested component name, if any (or empty String otherwise)
     * @since 4.0.1
     */

解释:该值可以指示逻辑组件名称的建议,在自动检测到组件的情况下,该名称将转换为Spring bean。

总的影响是把所有不存在的请求给来到这儿了。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值