【发布时间】:2017-10-11 22:59:33
【问题描述】:
我正在使用 spring-boot-starter-data-rest 和 spring-boot-starter-web。 我使用 CrudRepository 做了一个简单的项目,让 spring boot 生成其余请求映射。
现在,我想在 ./ 下添加一个客户端 - 进行其余的调用。 因此,我正在尝试使用 /api 为 rest 调用(并且只有那些!) 的路径添加前缀。
我尝试了以下答案: 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 中的源的 url 视为“rest-controllers”?
更新
设置属性
spring.data.rest.basePath=/api/*
完美运行。 (我的沙箱中仍然有一个程序化 bean 配置覆盖了这个设置)。
【问题讨论】:
-
前端使用什么框架? thymeleaf、jsp 等......你想要像 @RestController @RequestMapping("/") public class IndexController{ ... } 这样的东西。那么,当您访问 localhost:8080/ 时(index.html 应该显示正确)?
-
嗨@Jesse,我在前端使用AngularJS,因此没有服务器端技术。正如你所建议的,我希望 localhost:8080/ 显示 index.html
-
将您的 AnuglarJS 应用程序放在一个单独的项目中,并在开发期间从一个单独的位置提供它。这意味着更多的前期工作,但它会在一两个月内为卓越的设计和大规模的工具改进带来红利
-
我确实有两个独立的项目,因为我支持松散耦合。只有在想要同时部署后端和前端时才会出现问题:)。