POST 使用上下文路径调用在 spring 引导中不起作用 2.x

POST call using context-path not working in spring boot 2.x

我正在将我的 spring 启动应用程序从 1.5.x 迁移到 2.x 在不尾随 /

的情况下对上下文路径进行 POST 调用时出现 405 错误
{
    "timestamp": "2020-11-04T12:07:19.065+0000",
    "status": 405,
    "error": "Method Not Allowed",
    "message": "Request method 'GET' not supported",
    "path": "/hello/"
}

下面是我的代码

application.properties:

spring:
  application:
    name: hello-world-service
server:
  servlet:
    context-path: /hello
  port: 8082

HelloWorldController.java

@RestController
@RequestMapping(value = "/")
public class HelloWorldController {
    
    @PostMapping
    public ResponseEntity<String> helloWorld(@RequestBody HelloDto helloDto){
        return ResponseEntity.ok(helloDto.getName());
    }
}

HelloDto.java

@Data
public class HelloDto {
    private String name;
}

spring 引导版本:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.1.11.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
</parent>

当我在 http://localhost:8082/test 上进行 POST 调用时,我得到 405 状态,下面是屏幕截图

但是当我对 http://localhost:8082/test/ 进行 POST 调用时,它工作正常。下面是截图

有什么方法可以处理我们调用 localhost:8082/test 会得到与我们调用 localhost:8082/test/

相同的结果的情况

您没有终点 /hello/hello//hello 是 main/root 路径,您的端点是为 /hello/ 指定的,因为:

@RequestMapping(value = "/")

我在 application.yml

中添加 属性 下面后,它对我有用
server:
  tomcat:
    redirect-context-root: false