我正在使用spring-boot-starter-data-rest和spring-boot-starter- web。我使用CrudRepository做了一个简单的项目,让spring boot生成其余的请求映射。
现在,我想添加一个客户端-进行其余调用-在 ./* 下运行。因此,我试图用 / api 为 其余调用(以及只有这些!) 的路径添加 前缀 。 ***
我已经尝试了以下答案: 如何在Spring Boot中为所有控制器指定前缀? 使用application.properties文件中的设置
但是仍然不能使用./来获取静态内容(例如index.html,。js,。css)。网址也以“ / api /”作为前缀。其余的调用可以在/ api / foos下正确地服务。
有没有办法告诉spring不要将导致src / main / resources / public中的源的url视为“ rest-controllers”?
更新资料
设置属性 spring.data.rest.basePath = / api / * 可以完美地工作。(我的沙箱中仍然有程序化的Bean配置,可以覆盖此设置)。
Spring控制器可同时用于HTML和JSON / XML。第一个是通过Spring MVC视图和Thymeleaf之类的模板引擎完成的,后者完全由Spring和来处理@RestController。
@RestController
没有办法只为返回JSON或XML数据的控制器提供上下文路径,而对于其他控制器也没有,因此也适用于静态内容。通常,您需要做一些静态变量,其中包含您想要API的前缀,并在控制器的中使用该前缀@RequestMapping。即
@RequestMapping
@RestController @RequestMapping(MyConstants.API_LATEST + "/bookings") public class MyBookingsController { ... }
无论如何,您可能都想用类似的方法来解决前缀问题。当您至少在一段时间内进行重大更改时,通常必须支持较旧的API版本。