Kotlin 如何为micronaut中的所有控制器设置基本url?通过application.yml或任何配置

Kotlin 如何为micronaut中的所有控制器设置基本url?通过application.yml或任何配置,kotlin,jvm,micronaut,Kotlin,Jvm,Micronaut,如何为所有控制器设置基本url @Controller("/api/hello") class HelloController{ @Get("/greet") fun greet(){ } } 没有在每个控制器上写入/api,而是有一种方法可以将其作为所有rest控制器端点的配置中的基本url写入目前没有现成的此类功能 必须在application.yml中指定自定义属性,并从控制器中引用它们 例如: 目前还没有现成的此类功能 必须在application.yml中指

如何为所有控制器设置基本url

 @Controller("/api/hello")
class HelloController{

    @Get("/greet")
   fun greet(){

   }
}

没有在每个控制器上写入/api,而是有一种方法可以将其作为所有rest控制器端点的配置中的基本url写入

目前没有现成的此类功能 必须在application.yml中指定自定义属性,并从控制器中引用它们

例如:


目前还没有现成的此类功能 必须在application.yml中指定自定义属性,并从控制器中引用它们

例如:

您可以配置一次(默认实现)

  • 添加一些自定义属性micronaut.context路径,
    application.yml
  • 创建
    configurableDurimingStrategy
    并展开
    hyphenatedDurimingStrategy
  • 您可以配置一次(默认实现)

  • 添加一些自定义属性micronaut.context路径,
    application.yml
  • 创建
    configurableDurimingStrategy
    并展开
    hyphenatedDurimingStrategy
  • @Controller(“${my.config:/api}/foo”))
    
    micronaut:
      context-path: /someApiPath
    
    @Singleton
    @Replaces(HyphenatedUriNamingStrategy::class)
    class ConfigurableUriNamingStrategy : HyphenatedUriNamingStrategy() {
    
        @Value("\${micronaut.context-path}")
        var contextPath: String? = null
    
        override fun resolveUri(type: Class<*>?): String {
            return contextPath ?: "" + super.resolveUri(type)
        }
    
        override fun resolveUri(beanDefinition: BeanDefinition<*>?): String {
            return contextPath ?: "" + super.resolveUri(beanDefinition)
        }
    
        override fun resolveUri(property: String?): String {
            return contextPath ?: "" + super.resolveUri(property)
        }
    
        override fun resolveUri(type: Class<*>?, id: PropertyConvention?): String {
            return contextPath ?: "" + super.resolveUri(type, id)
        }
    }
    
    @Controller
    class HelloController {
    
       @Get("/greet")
       fun greet(){
    
       }
    }