spring 引导:将 REST 与静态内容分开
spring boot: separate REST from static content
我正在使用 spring-boot-starter-data-rest 和 spring-boot-starter-web。
我使用 CrudRepository 做了一个简单的项目,让 spring 引导生成其余请求映射。
现在,我想添加一个客户端 -- 进行其余调用 -- 在 ./ 下进行。
因此,我正在尝试 prefix rest 调用的路径(而且只有那些!) 和 /api.
我试过以下答案:
使用 application.properties 文件中的设置
- server.contextPath=/api/*
- spring.data.rest.basePath=/api/*.
但静态内容(例如 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
.
处理
没有办法只为 returns JSON 或 XML 数据的控制器设置上下文路径,其他控制器也没有,这也适用于静态内容。你通常做的是有一些静态变量,其中包含你想要的 API 的前缀,以及在控制器的 @RequestMapping
中的使用。即
@RestController
@RequestMapping(MyConstants.API_LATEST + "/bookings")
public class MyBookingsController {
...
}
无论如何,您可能想用这些方法来解决前缀问题。当您进行重大更改时,通常必须支持旧的 API 版本,至少在一段时间内是这样。
我正在使用 spring-boot-starter-data-rest 和 spring-boot-starter-web。 我使用 CrudRepository 做了一个简单的项目,让 spring 引导生成其余请求映射。
现在,我想添加一个客户端 -- 进行其余调用 -- 在 ./ 下进行。 因此,我正在尝试 prefix rest 调用的路径(而且只有那些!) 和 /api.
我试过以下答案:
- server.contextPath=/api/*
- spring.data.rest.basePath=/api/*.
但静态内容(例如 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
.
没有办法只为 returns JSON 或 XML 数据的控制器设置上下文路径,其他控制器也没有,这也适用于静态内容。你通常做的是有一些静态变量,其中包含你想要的 API 的前缀,以及在控制器的 @RequestMapping
中的使用。即
@RestController
@RequestMapping(MyConstants.API_LATEST + "/bookings")
public class MyBookingsController {
...
}
无论如何,您可能想用这些方法来解决前缀问题。当您进行重大更改时,通常必须支持旧的 API 版本,至少在一段时间内是这样。