如何设置 Micronaut 上下文路径

Posted

技术标签:

【中文标题】如何设置 Micronaut 上下文路径【英文标题】:How to Set Micronaut Context Path 【发布时间】:2019-01-20 14:55:53 【问题描述】:

如何为 micronaut 微服务设置上下文路径?我想做一些类似于 Spring Framework 中可用的操作,您可以在其中设置“server.servlet.contextPath”属性。我无法在 micronaut 文档here 中找到任何内容。我想为我的微服务和我的“bar”控制器(例如http://domain/foo/bar)设置一个基本路径。在 Spring 中,这看起来像

server:
  servlet:
    context-path: foo

我目前正在使用 micronaut 1.0.0.M4。感谢您的帮助。

【问题讨论】:

Micronaut 的非阻塞 HTTP 服务器基于 Netty。我认为 Netty 中没有“上下文”的概念——现在 Spring WebFlux(使用 Netty)也是如此。 【参考方案1】:

我想为我的微服务和我的“栏”设置一个基本路径 控制器(例如http://domain/foo/bar)

如果您希望BarController 在向/foo/bar 发送请求时做出响应,那么一种方法是这样...

@Controller("/foo/bar")
public class BarController 

    @Get("/")
    public SomeReturnType index() 
        // ...
    

【讨论】:

【参考方案2】:

也许不是您要找的答案,但您可以通过以下方式向控制器添加上下文路径

@Controller("$micronaut.context.path:/api"

这适用于控制器,如果路径未定义,它将为您提供/api。对此的一个重要警告是,您的 swagger 文档将不再正常运行,因为编译时生成不考虑该属性并将其解析为 /api

【讨论】:

【参考方案3】:

您可以在配置中设置上下文路径

micronaut:
  server:
    context-path: /my-path

文档:link

【讨论】:

【参考方案4】:

使用 Micronaut 3 测试:

micronaut:
  application:
    name: micronaut-demo
  server:
    context-path: $ENV_CONTEXT_PATH:`/`

使用此配置,您可以将上下文路径定义为 env 变量,否则默认为“/”(没有特定的上下文路径)。

【讨论】:

以上是关于如何设置 Micronaut 上下文路径的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 Spring 根上下文路径

如何在 Jhipster (spring boot + angular) 应用程序上设置上下文路径

如何在 angular2 路由中正确设置应用程序上下文路径?

使用 Maven 时如何在 Tomcat 7.0 中将上下文路径设置为 root("/")

如何在 Spring Boot Tests 中设置 servlet 上下文路径?

Spring Boot/Gradle/Tomcat 将上下文路径设置为 .war 名称以外的内容