Необязательный автономный необязательный параметр пути
Я пытаюсь настроить запрос GET с необязательным параметром, но я получаю сообщение об ошибке при локальном вызове URL- адреса без необязательного параметра. Он работает нормально онлайн на лямбда, хотя. Что я сделал не так?
Я использую версию без сервера 1.24.1 с плагином без сервера версии 3.16.0
вот мое определение запроса в serverless.yml:
functions:
getitems:
handler: lambda.handler
events:
- http:
path: item/store/{storeid}/{itemstatus}
method: get
cors: true
request:
parameters:
paths:
storeid: true
itemstatus: false
этот URL работает:
http://localhost:3000/item/store/123456/used
это не
http://localhost:3000/item/store/123456
и дает мне этот вывод
{
statusCode: 404,
error: "Serverless-offline: route not found.",
currentRoute: "get - /item/store/123456",
existingRoutes: [
"get - item/store/{storeid}/{itemstatus}"
]
}
большое спасибо
4 ответа
К сожалению, ответ Чэнь Дачао не таков:
Произошла ошибка: ApiGatewayResourceExperimentExperimentVarPsizeVar - часть пути ресурса позволяет только a-zA-Z0-9._- и фигурные скобки в начале и в конце.
Текущий обходной путь - добавление обработчиков http для каждой "необязательной" переменной в пути, например:
functions:
getitems:
handler: lambda.handler
events:
- http:
path: item/store/{storeid}
method: get
cors: true
request:
parameter:
storeid: true
- http:
path: item/store/{storeid}/{itemstaus}
method: get
cors: true
request:
parameter:
storeid: true
itemstatus: true
Добавлять "?" после параметров можно заставить его работать.
functions:
getitems:
handler: lambda.handler
events:
- http:
path: item/store/{storeid}/{itemstatus?}
method: get
cors: true
Если ты хочешь itemstatus
чтобы быть необязательным, вы должны установить его в false в своем определении запроса к серверу, например:
- http:
path: item/store/{storeid}/{itemstaus}
method: get
cors: true
request:
parameter:
storeid: true
itemstatus: false
Я использовал следующую опцию, и она работала с параметрами и без них.
- http:
path: auth/{role?}
method: get
request:
parameter:
paths:
role: false