Как я могу установить параметр как не требуемый в запросе Micronaut GET?

Мне нужно установить параметр как «Не требуется» в моем запросе.

Я пытался:

 @Get(value = "/list/{username}")
 HttpResponse<?> list(String username, @QueryValue(value = "actionCode") String actionCode) {
     ...
 }

Когда я отправляю запрос http: // localhost: 8080 / notification / list / 00000000000, выдается следующая ошибка:

{
    "message": "Required Parameter [actionCode] not specified",
    "path": "/actionCode",
    "_links": {
        "self": {
            "href": "/notification/list/00000000000",
            "templated": false
        }
    }
}

person Jeferson Leonardo    schedule 30.09.2020    source источник


Ответы (1)


Вы можете определить параметр запроса в Micronaut как необязательный с помощью аннотации javax.annotation.Nullable:

import io.micronaut.http.annotation.Controller;
import io.micronaut.http.annotation.Get;
import io.micronaut.http.annotation.QueryValue;
import javax.annotation.Nullable;

@Controller("/sample")
public class SampleController {
    @Get("/list/{username}")
    public String list(
        String username,
        @Nullable @QueryValue String actionCode
    ) {
        return String.format("Test with username = '%s', actionCode = '%s'", username, actionCode);
    }
}

А вот примеры звонков с их результатами. Звоните без actionCode:

$ curl http://localhost:8080/sample/list/some-user
Test with username = 'some-user', actionCode = 'null'

Позвоните с actionCode:

$ curl http://localhost:8080/sample/list/some-user?actionCode=some-code
Test with username = 'some-user', actionCode = 'some-code'

Как видите, ошибки нет, и это работает в Micronaut версии 1 и версии 2.

person cgrim    schedule 01.10.2020
comment
Я забыл упомянуть в описании вопроса, но я попробовал @Nullable, и это не сработало. Возникает та же ошибка. - person Jeferson Leonardo; 01.10.2020
comment
Это должно сработать. Я добавил в ответ полный пример класса контроллера с примерами вызовов curl. Попытайся. Если ошибка по-прежнему возникает, значит, проблема в другом месте. - person cgrim; 01.10.2020
comment
Виноват. Проблема заключалась в импорте аннотации, допускающей значение NULL. Когда я устанавливаю javax.annotation.Nullable, он работает. Спасибо. - person Jeferson Leonardo; 01.10.2020