spring :绕过特定控制器的 contextPath

2024-01-21

我正在构建一个Spring云配置 https://cloud.spring.io/spring-cloud-config/服务器和我使用该属性server.contextPath: /configServer但我也希望我的服务器对任何请求响应 200/ping (not /configServer/ping)。 有什么方法可以绕过特定 RestController 的 contextPath 属性(或任何其他方法来实现这一点)?

Thanks.


我找到了解决我的问题的方法:

有的是春天财产spring.cloud.config.server.prefix https://cloud.spring.io/spring-cloud-config/multi/multi__embedding_the_config_server.html这正是我想要的。这个前缀就像 contextPath 但仅适用于配置服务器,因此我可以编写自定义控制器/ping映射,同时配置服务器服务所有请求/configServer.

UPDATE:

示例代码:

这是响应 /ping 的控制器

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;    

@RestController
public class PingController {

    @RequestMapping(value = "/ping", method = RequestMethod.GET)
    public void respondToPing() {
        return;
    }

}

在应用程序属性中(我使用 yml):

...
spring:
  profiles:
    active: native
  cloud:
    config:
      server:
        prefix: /api/configuration
...

我无法共享整个配置文件,但值得一提的是它不包括server.contextPath财产。

这将导致这些映射:

2018-11-14 15:45:53.208  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/ping],methods=[GET]}" onto public void com.coral.epos2.config.server.controllers.PingController.respondToPing()
2018-11-14 15:45:53.215  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2018-11-14 15:45:53.218  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2018-11-14 15:45:53.333  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/configuration/encrypt],methods=[POST]}" onto public java.lang.String org.springframework.cloud.config.server.encryption.EncryptionController.encrypt(java.lang.String,org.springframework.http.MediaType)
2018-11-14 15:45:53.336  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/configuration/encrypt/{name}/{profiles}],methods=[POST]}" onto public java.lang.String org.springframework.cloud.config.server.encryption.EncryptionController.encrypt(java.lang.String,java.lang.String,java.lang.String,org.springframework.http.MediaType)
2018-11-14 15:45:53.339  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/configuration/decrypt/{name}/{profiles}],methods=[POST]}" onto public java.lang.String org.springframework.cloud.config.server.encryption.EncryptionController.decrypt(java.lang.String,java.lang.String,java.lang.String,org.springframework.http.MediaType)
2018-11-14 15:45:53.342  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/configuration/decrypt],methods=[POST]}" onto public java.lang.String org.springframework.cloud.config.server.encryption.EncryptionController.decrypt(java.lang.String,org.springframework.http.MediaType)
2018-11-14 15:45:53.345  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/configuration/encrypt/status],methods=[GET]}" onto public java.util.Map<java.lang.String, java.lang.Object> org.springframework.cloud.config.server.encryption.EncryptionController.status()
2018-11-14 15:45:53.348  INFO 13412 --- [           main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/api/configuration/key],methods=[GET]}" onto public java.lang.String org.springframework.cloud.config.server.encryption.EncryptionController.getPublicKey()
...

我的 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <artifactId>config-server</artifactId>
    <groupId>foivaras</groupId>
    <modelVersion>4.0.0</modelVersion>
    <name>configuration server</name>
    <packaging>jar</packaging>
    <version>develop-SNAPSHOT</version>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.2.RELEASE</version>
        <relativePath/>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>Camden.SR6</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-config-server</artifactId>
        </dependency>
        <dependency>
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>4.7</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <executable>true</executable>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>

        </plugins>
    </build>
</project>

希望有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

spring :绕过特定控制器的 contextPath 的相关文章

随机推荐

  • ASP.NET Web API 基本身份验证授权标头

    我有一个BasicAuthenticationAttribute检查请求中的 Authorization 标头 但尽管它存在 它仍然认为 Authorization 标头为空 public class BasicAuthentication
  • 测试 Bash 中字符串是否包含非空白字符

    我的脚本正在读取并显示 id3 标签 我试图让它回显未知字段是否为空 但我尝试的每个 if 语句都不起作用 id3 标签是固定大小的 因此它们永远不会为空 但如果没有值 它们会用空格填充 即标题标签的长度为 30 个字符 到目前为止我已经尝
  • 如何在重定向 Express 4 之前找到原始请求路径

    假设我正在尝试访问该路径http localhost 3000 users WyCrYc28r foo 1414585518343 但路径 users仅需要经过身份验证的用户才能访问 如下所示 app get users isLoggedI
  • 如何检测在 Windows Phone 7 中选择了枢轴项目

    我正在 Windows Phone 7 中实现 Pivot 控件 我想知道在用户进行滑动手势后哪个枢轴项目被选择并处于活动状态 如何检测与Pivot控件相关的滑动手势事件 我应该使用哪种委托方法 SelectionChanged 是连接到的
  • 是否可以在不启动另一个进程的情况下提升UAC进程

    我想知道程序是否可以通过 UAC 提示来提示用户提升自己的权限 而无需启动另一个进程 我在互联网上找到的所有示例似乎都是 ShellExecute runas 它创建了一个具有提升权限的新进程 如果这是不可能的 那么我想我最好的解决方案是创
  • 在 Angular 5 / TypeScript 中获取类(接口)属性而不分配默认值

    假设我有一个接口 A 我按照 Angular 风格指南将其声明为一个类 这个类有很多属性 我想获取它们的名称 而不必为它们分配任何值 我怎样才能做到这一点 Class A export class A property1 string pr
  • segue后屏幕变黑

    我尝试对此进行调试但无济于事 基本上 当我从第一个视图控制器切换到第二个视图控制器时 屏幕会暂时变黑 代码按照我想要的方式执行 但是屏幕变黑对我来说有点痛苦 这是代码 从第一页开始的segue func mapView mapView MG
  • 使用表达式创建带有嵌套类的谓词

    我有这个 public class Company public int Id get set public string Name get set public class City public int Id get set publi
  • Java 集合框架的 Python 等价物是什么?

    Java 集合框架就像 C 标准模板库 用于表示和操作集合 将多个元素分组为一个单元的对象 的统一体系结构 http java sun com docs books tutorial collections intro index html
  • 如何在Azure中为Net Core 2应用程序启用应用程序日志?

    我正在尝试在天蓝色中启用应用程序日志 我有一个虚拟的 Net Core 2 应用程序在 azure 的 appService 中运行 基本上我的目标是查看日志流和应用程序日志文件中的跟踪消息 但我还没有找到执行此操作的正确方法 我在阅读其他
  • Angular - 构建后未处理的导航错误

    我通过以下命令构建了一个简单的角度应用程序 其中有 2 条路线 ng build aot prod base href 然后我打开index html文件位于dist文件夹和应用程序运行 但路线不起作用 我在控制台上收到以下警告 希望能很好
  • Yeoman gifsicle 错误(及其他)

    我在尝试执行此操作时收到以下错误yo angular 在搭建过程中还有其他错误消息 I did npm install g yo npm install g generator angular yo angular 我也尝试过做npm in
  • 如何使用 MP4Box 创建 mpd 文件

    我是 GPAC 的 MP4Box 工具的新手 使用它 我们可以为 DASH 创建 MPD 媒体演示描述 文件 我不知道该怎么做 有人使用此工具为视频文件创建 MPD 吗 MP4Box dash 2000 profile dashavc264
  • 授权具有多个角色的属性

    我想向控制器添加授权 一次用于多个角色 通常情况下 它看起来像这样 Authorize Roles RoleA RoleB RoleC public async Task
  • jQuery.post() .done() 并成功:

    jQuery文档关于jQuery post Assign handlers immediately after making the request and remember the jqxhr object for this reques
  • 用于获取正在运行的应用程序使用的容器和 vcore 数量的 YARN shell 命令

    hadoop job list似乎只显示mapreduce作业 但我的资源管理器UI显示了在YARN上运行的所有作业 包括Spark和Tez等 的 分配的CPU VCores 和 分配的内存MB 等内容 如何通过命令行而不是通过 UI 获取
  • Android - 如何创建一个活动的多个实例?

    我想知道是否可以在 Android 中创建单个 Activity 的多个实例 我目前使用以下代码启动自己的通话屏幕进行 Voip 测试 public void initInCallScreen String pName String pho
  • 将嵌套的 json 转换为没有嵌套对象的字典格式

    我有以下格式的输入数据 data u Richard u 48 u Josh u Beth u city u Seattle u Disability u no u enterprenuer u yes u Bryan u 32 u cit
  • 服务如何与其活动通信?服务如何调用启动该服务的活动中的方法?

    假设我有一个活动 它是一个列表 当该活动启动时 它会调用一个服务 该服务将执行后台操作 下载 解析和填充列表 我的问题是 怎样才能服务与活动通信 如何从服务调用活动中的方法 我是面向对象编程的新手 该服务是这样启动的 hello servi
  • spring :绕过特定控制器的 contextPath

    我正在构建一个Spring云配置 https cloud spring io spring cloud config 服务器和我使用该属性server contextPath configServer但我也希望我的服务器对任何请求响应 20