代码之家  ›  专栏  ›  技术社区  ›  Trace

服务器.servlet.context-路径不工作(wtf)

  •  2
  • Trace  · 技术社区  · 3 年前

    server.port=8080
    server.servlet.context-path=/api
    

    控制器:

    @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);
        }
    
    }
    

    此uri在Postman中为我提供了一个结果:

    localhost:8080/posts/v1.0
    

    而这一条没有:

    localhost:8080/api/posts/v1.0
    

    没有任何意义。

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
    </parent>
    

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

    1 回复  |  直到 3 年前
        1
  •  2
  •   Trace    3 年前

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-webflux</artifactId>
        </dependency>
    

    spring.webflux.base-path=/api
    
        2
  •  -2
  •   Dharman GPuri    3 年前

    如果您想为uri提供动态和可更改的前缀,可以在属性文件中使用自定义变量,并通过${}将它们用作映射的前缀