Вы можете настроить один раз RouteBuilder.UriNamingStrategy (реализация по умолчанию HyphenatedUriNamingStrategy )
- добавить пользовательское свойство micronaut.context-path ,
application.yml
:
micronaut:
context-path: /someApiPath
- создать
ConfigurableUriNamingStrategy
и развернуть HyphenatedUriNamingStrategy
:
@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)
}
}
Эта конфигурация будет применяться для всех контроллеров,
для вашего HelloController
пути URI будет /someApiPath/greet
, если свойство micronaut.context-path
отсутствует, то /greet
:
@Controller
class HelloController {
@Get("/greet")
fun greet(){
}
}