spring boot:将REST与静态内容分开

时间:2017-05-12 15:00:45

标签: spring-boot spring-rest

我正在使用spring-boot-starter-data-rest和spring-boot-starter-web。 我使用CrudRepository创建了一个简单的项目,让spring boot生成其余的请求映射。

现在,我想添加一个客户端 - 进行其余调用 - 生活在 ./ 下。 因此,我正在尝试前缀 其余调用(仅限那些!) / api 的路径。

我尝试过以下答案: How to specify prefix for all controllers in Spring Boot? 使用application.properties文件中的设置

  • server.contextPath = / API / *
  • spring.data.rest.basePath = / API /*.

但是静态内容(例如index.html,*。js,* .css)仍未使用./获取。网址也以“/ api /”为前缀。 其余的电话在/ api / foos下正确提供。

有没有办法告诉spring不要将导致位于src / main / resources / public的资源的网址视为'rest-controllers'?

更新

设置属性
spring.data.rest.basePath = / API / *
工作得很好。 (我的沙箱中仍然有一个程序化bean配置覆盖此设置)。

1 个答案:

答案 0 :(得分:0)

Spring控制器用于提供HTML和JSON / XML。第一个是通过Spring MVC Views和一些像Thymeleaf这样的模板引擎完成的,后者完全由Spring和@RestController处理。

没有办法只为返回JSON或XML数据的控制器提供上下文路径,而对于其他控制器也没有,这也适用于静态内容。你通常做的是有一些静态变量,包含你想要的API前缀,以及控制器@RequestMapping中的用法。即。

@RestController
@RequestMapping(MyConstants.API_LATEST + "/bookings")
public class MyBookingsController {
    ...
}

您可能希望无论如何都要使用这些行来解决前缀问题。当您有更改时,必须支持较旧的API版本,至少在一段时间内。