spring - 实现 Spring Controller 时共享一个公共(public)父路径

标签 spring api rest controller

我希望能够定义一个具有“/api”映射的父 Controller 类,然后用我的不同实现扩展该 Controller 。
所以 ApiController 将有:

@Controller
@RequestMapping("/api")

例如,我的用户 Controller 应该扩展基本 api Controller ,并将“/users”添加到路径中,因此它将响应“/api/users”请求。所以 UserController 将有:
@Controller
@RequestMapping("/users")

但由于它扩展了 ApiController,它将有效地响应/api/users。

当然,我可以在所有 Controller 前面加上“/api”,这样就可以在没有父类的情况下实现这一点,但如果可能的话,我更喜欢“以正确的方式”来做,这样我就可以用更清晰、更明显的方式定义我的 api 实现小路。

我尝试扩展 ApiController 基类,但这不起作用,UserController 仍然响应“/users”并忽略基类“/api”。

最佳答案

嗯。你可以试试这个,它对我有用:

@RequestMapping("/abstract")
public abstract class AbstractController {


}

@Controller
public class ExtendedAbstractController extends AbstractController {

   @RequestMapping("/another")
   public String anotherTest() {
       return "another";
   }

}

注意,你的基类不能有 @Controller注释并且必须是 摘要 .

如果您尝试扩展注释为 Controller 的非抽象类并且具有 @RequestMapping您在 RequestMappingHandlerMapping 的步骤中遇到错误初始化。

关于spring - 实现 Spring Controller 时共享一个公共(public)父路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11922679/

相关文章:

java - KafkaMessageListenerContainer 与 ConcurrentMessageListenerContainer

reactjs - ReactJS 和 .NET Core API 中的 windows 授权

php - 如何获取视频的嵌入代码

json - OPTIONS 返回 204,POST 返回 200 但数据库中没有输入数据

api - 用于 REST API 调用的 Yii2 数据提供者

spring - 为什么我不能在 Spring MVC 中使用 Valid 参数和 RequestParam?

java - 无法自动配置 session 存储库,请检查您的配置( session 存储类型为 'null' )

spring - 如何在 spring mvc 表单中验证多个模型?

ios - 无缝处理客户端应用程序中的授权 token 过期

language-agnostic - 如何处理 Web 应用程序和 RESTful API 中合并的对象/资源?