AWS AppSync позволяет определять значения по умолчанию в такой схеме
type Foo {
bar(
arg: Int = 20
): Bar!
}
или это
type Foo {
bar(
arg: Int! = 20
): Bar!
}
Но в любом случае, когда значение не определено явно, значение по умолчанию не передается преобразователю.
Есть ли что-то, на что я должен согласиться, чтобы активировать значение по умолчанию, которое нужно передать? Это ошибка AWS? Если да, то есть ли обходной путь?
PS: В Спецификации GraphQL
If no value is provided for a defined input object field and that field definition provides a default value, the default value should be used. If no default value is provided and the input object field’s type is non‐null, an error should be thrown. Otherwise, if the field is not required, then no entry is added to the coerced unordered map.





Аргументы по умолчанию в настоящее время являются известной проблемой, и лучший способ обойти их - использовать вспомогательную функцию скорости $util.defaultIfNull(). Например, вы можете использовать аргументы по умолчанию для limit и next token, делая что-то вроде этого:
{
"version": "2017-02-28",
"operation": "Scan",
"limit": $util.defaultIfNull($ctx.args.first, 20),
"nextToken": $util.toJson($util.defaultIfNullOrEmpty($ctx.args.after, null)),
}
Да, я уже использую значение по умолчанию на уровне распознавателя (использую Lambda вместо шаблонов скорости). Но меня это не устраивает, потому что я устанавливаю значение по умолчанию непосредственно в схеме arg: Int = 20 и не хочу дублировать определения как в схеме, так и в преобразователе. Я ожидал, что значение по умолчанию будет установлено и управляться непосредственно в AppSync .. не в преобразователе
Ты прав. Это известная проблема, которая будет исправлена в будущем.
@mparis есть какие-либо обновления по этому поводу, поскольку кажется, что это все еще не работает, как предполагалось в спецификациях?
Вопрос: Если лимит передается как аргумент graphQL, то что помешает потребителю API запрашивать данные с лимитом «1000000»? Разве это не противоречит цели разбивки на страницы API?
Если вы подождете еще 6 лет, по слухам, команда AppSync исправит это.
Я создал проблему в официальном репозитории AWS AppSync github.com/aws/aws-appsync-community/issues/59