Необязательный автономный необязательный параметр пути

Я пытаюсь настроить запрос 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
Другие вопросы по тегам