gpt4 book ai didi

spring-boot - Spring Boot : separate REST from static content

转载 作者:行者123 更新时间:2023-12-01 04:48:48 25 4
gpt4 key购买 nike

我正在使用 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 中的源的 url 视为“rest-controllers”?

    更新

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

    最佳答案

    Spring Controller 用于提供 HTML 和 JSON/XML。第一个是通过 Spring MVC View 和 Thymeleaf 等模板引擎完成的,后者完全由 Spring 和 @RestController 处理。 .

    没有办法只为返回 JSON 或 XML 数据的 Controller 设置上下文路径,其他 Controller 也没有,这也适用于静态内容。你通常做的是有一些包含你想要的 API 前缀的静态变量,并在 Controller 的 @RequestMapping 中使用它。 . IE。

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

    无论如何,您可能想用这些方法来解决前缀问题。当您有重大更改时,通常必须支持较旧的 API 版本,至少在一段时间内是这样。

    关于spring-boot - Spring Boot : separate REST from static content,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43940856/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com