关于CMS对外接口路由定义

yb1987 2021-11-16 906浏览

目前cms内共定义四个servlet

2021-11-16 15:16:57,732| [localhost-startStop-1] INFO  - Mapping servlet: 'captchaServlet' to [/captcha]
2021-11-16 15:16:57,733| [localhost-startStop-1] INFO  - Mapping servlet: 'keepSessionServlet' to [/keep_session]
2021-11-16 15:16:57,734| [localhost-startStop-1] INFO  - Mapping servlet: 'backendDispatcherServlet' to [/cmscp/*]
2021-11-16 15:16:57,734| [localhost-startStop-1] INFO  - Mapping servlet: 'dispatcherServlet' to [/]

分别处理验证码,会话保持,后端接口(*.do),前端处理(系统默认的dispatcherServlet) 。现在想通过cms暴露一些接口(主要是api)给第三方系统调用,是否再定义个ServletRegistrationBean 处理路由规则为/api/** 。如下所示

	@Bean(name = "backendDispatcherServletRegistration222")
	public ServletRegistrationBean backendDispatcherServletRegistration222(
			ObjectProvider<MultipartConfigElement> multipartConfigProvider) {
		ServletRegistrationBean registration = new ServletRegistrationBean(backendDispatcherServlet2(), "/api/**");
		registration.setLoadOnStartup(0);
		registration.setName("backendDispatcherServlet222");
		return registration;
	}

但是“/api/**”格式 是不符合servlet的url-pattern定义个的要么/*,要么是*.do后缀这种。

    2021-11-16 15:16:57,734| [localhost-startStop-1] INFO  - Mapping servlet: 'backendDispatcherServlet222' to [/api/**]
    2021-11-16 15:16:57,734| [localhost-startStop-1] INFO  - Suspicious url pattern: "/api/**" in context [] - see sections 12.1 and 12.2 of the Servlet specification

如果不写成/api/**,那么访问**.com/api/site/getList没法处理 直接交给了前端dispatcherServlet处理 出现404 。另外 一些通用的filter 也会拦截请求,使得fitlter中得增加/api这种路由的处理,增加了程序复杂性。

是否有更好的建议呢

参:https://blog.csdn.net/n447194252/article/details/77481663

评论 2021-11-22 修改 by support

我来回答

请先登录再回答问题
点击查看大图插件