Сопоставление контроллера с несколькими необязательными параметрами запроса не работает

Я хочу сопоставить запрос с контроллером, который обрабатывает такие URL-адреса, как:

/weather?city=London
/weather?city=London&country=GB

Обратите внимание: город и страна - необязательные параметры.

Этот простой контроллер:

@Controller("/weather")
class WeatherController(...) {

    @Get(produces = [MediaType.APPLICATION_JSON])
    fun getWeather(city: String?, country: String?): Flux<Any> = ...

Но, похоже, есть проблема с отображением:

java.lang.NoSuchMethodError: com.codependent.weatherapp.controller.WeatherController.getWeather(Ljava/lang/String;Ljava/lang/String;)Lreactor/core/publisher/Flux;
    at com.codependent.weatherapp.controller.$WeatherControllerDefinition$$exec1.invokeInternal(Unknown Source)
    at io.micronaut.context.AbstractExecutableMethod.invoke(AbstractExecutableMethod.java:145)

ОБНОВЛЕНИЕ: проект доступен на Github.

Я пробовал несколько способов сопоставить необязательные параметры, но ни один из них не работал:

1) Следование документации по переменным пути URI http: // localhost: 8080 / weather / test1 < / а>

@Get(value = "/test1{?city,country,cityIds}", produces = [MediaType.APPLICATION_JSON])
fun getWeather(city: Optional<String>, country: Optional<String>, cityIds: Optional<String>) = "The weather is...".toMono()

2) Просто указание необязательного, без фактического сопоставления параметров запроса - http://localhost:8080/weather/test2

@Get(value = "/test2", produces = [MediaType.APPLICATION_JSON])
fun getWeather2(city: Optional<String>, country: Optional<String>, cityIds: Optional<String>) = "The weather is...".toMono()

3) Способ Kotlin, просто выражая возможность нулевого значения параметров - http://localhost:8080/weather/test3

@Get(value = "/test3", produces = [MediaType.APPLICATION_JSON])
fun getWeather3(city: String?, country: String?, cityIds: String?) = "The weather is...".toMono()

person codependent    schedule 22.10.2018    source источник
comment
Не могли бы вы сообщить о проблеме с примером проекта?   -  person James Kleeh    schedule 23.10.2018
comment
Выполнено! github.com/codependent/micronaut-weather-app   -  person codependent    schedule 24.10.2018
comment
Созданная проблема: github.com/micronaut-projects/micronaut-core/issues/770   -  person codependent    schedule 24.10.2018


Ответы (1)


Проект в порядке, похоже, возникла проблема с IntelliJ, которая не создавала его должным образом. Я изменил конфигурацию здания, чтобы делегировать процесс Gradle, и проблема была решена.

Я признателен за поддержку @James Kleeh. Наслаждайтесь Микронавтом!

person codependent    schedule 24.10.2018