server.servlet.context-path 不起作用(wtf)

Tra*_*ace 5 java spring-boot spring-webflux

我的应用程序属性:

server.port=8080
server.servlet.context-path=/api
Run Code Online (Sandbox Code Playgroud)

控制器:

@RestController
@RequestMapping("/posts")
public class PostController {

    @GetMapping({ "/v1.0" })
    public ResponseEntity<List<Post>> getPosts(@RequestParam Optional<String> maxId) {
        List<Post> posts = Arrays.asList(
                new Post(new ObjectId().toString(), "Test status 1", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 2", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 3", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 4", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 5", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 6", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 7", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 8", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 9", LocalDateTime.now()),
                new Post(new ObjectId().toString(), "Test status 10", LocalDateTime.now())
        );
        return ResponseEntity.ok(posts);
    }

}
Run Code Online (Sandbox Code Playgroud)

这个 uri 在 Postman 中给了我一个结果:

localhost:8080/posts/v1.0
Run Code Online (Sandbox Code Playgroud)

而这个则没有:

localhost:8080/api/posts/v1.0
Run Code Online (Sandbox Code Playgroud)

没有任何意义。

版本:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.4.2</version>
</parent>
Run Code Online (Sandbox Code Playgroud)

注意:application.properties 被正确读取,我可以随意更改端口号。

Tra*_*ace 7

我目前正在编写的是样板文件(这就是为什么我还没有实现 Webflux,只是为了让基本的 REST api 工作),但我添加了 Maven Webflux 包,因为我想要一个反应式 api:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,需要使用以下属性:

spring.webflux.base-path=/api
Run Code Online (Sandbox Code Playgroud)