当前位置: 首页 > 知识库问答 >
问题:

spring Boot:将REST与静态内容分离

路雅懿
2023-03-14
  • server.contextpath=/api/*
  • spring.data.rest.basepath=/api/*.

但是静态内容(例如,index.html、*.js、*.css)仍然不能使用。/获取。这些URL的前缀也是“/api/”。其余调用在/api/foos下得到正确的服务。

有没有一种方法告诉spring不要将指向位于src/main/resources/public中的源的URL视为“REST控制器”?

共有1个答案

令狐珂
2023-03-14

Spring控制器是为HTML和JSON/XML提供服务的。第一个是通过Spring MVC视图和一些模板引擎(如Thymeleaf)完成的,后者完全由Spring和@restcontroller处理。

没有办法只为返回JSON或XML数据的控制器而不为其他控制器提供上下文路径,这也适用于静态内容。您通常要做的是使用一些静态变量,其中包含API所需的前缀,并在控制器的@requestmapping中使用该前缀。即。

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

无论如何,您可能希望使用以下内容来解决前缀问题。当您有突破性的变化时,必须支持旧的API版本是很常见的,至少在一段时间内是这样。

 类似资料:
  • 我无法访问静态内容(angular app),甚至无法访问简单的索引。来自spring boot的html文件。我一直收到404错误。Spring没有为我提供这些静态文件。自从升级到Spring Boot 2.2.4后,我就遇到了这个问题。我必须升级以应对Zip64问题。 我的application.properties里有这样一句话: 我也有自己的staticResourceConfigurat

  • 因此,我正在IntelliJ开发一个spring boot应用程序。使用Gradle,我创建了sprint引导jar文件。 我很难确定将JSP和静态内容(如。js文件)放在哪里,这样运行jar和从IntelliJ内部运行都能正常工作!

  • 注意: 本教程假定你已经下载和安装了CodeIgniter开发环境。 首先,你需要创建一个可以处理静态内容请求的控制器类。控制器,是一个用来代理完成某项任务的PHP类,它充当基于MVC架构应用程序的“粘合剂”(译者注:控制器用来粘合/协调不同模型和视图。随着教程的深入,你会更深刻的理解这一点)。 举例来说,假设存在某个针对如下URL的请求: http://example.com/news/late

  • Note: 这篇教程假设你已经下载好 CodeIgniter ,并将其 安装 到你的开发环境。 你要做的第一件事情是新建一个 控制器 来处理静态页面,控制器就是一个简单的类, 用来完成你的工作,它是你整个 Web 应用程序的 “粘合剂” 。 例如,当访问下面这个 URL 时: http://example.com/news/latest/10 通过这个 URL 我们就可以推测出来,有一个叫做 "n

  • 我现在尝试在启动Docker容器时分配静态IP172.17.0.1。 我使用端口2122作为该容器的ssh端口,以便让该容器侦听端口2122。 这个命令将运行一个带有随机IP的Docker容器,如172.17.0.5,但我需要为容器分配一个特定的IP。 下面的shell脚本是我在高级网络设置中引用Docker文档的部分。 此shell脚本将分配一个静态IP 172.17.0.1并链接到world

  • 问题内容: Express和connect似乎已删除其gzip功能,因为它们效率太低。目前,对于express-js的gzip是否有可靠的解决方案? 问题答案: Connect 2.0 添加了对基于新zlib东西的compress()中间件的支持,而这些东西刚刚出现在Node Core API中。 通过在文件中添加连接2.0的依赖关系,可以在快速服务器中使用此功能: 然后将以下逻辑应用于快速应用程