Как определить несколько путей для одного обработчика в безсерверном? - PullRequest
1 голос
/ 09 апреля 2020

Я пытался и искал в Интернете, но не смог найти ответ. Можно ли добиться следующих результатов с помощью Serverless Framework:

Я хочу использовать get.handler, который имеет код для следующего определения, как для получения одного элемента, так и для получения всех элементов. Итак:

  • если я нажму api.example.com/items/, я получу все предметы
  • , если я нажму api.example.com/items/1234, я получу элемент с id = 1234
 - get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get

Пока в get.handler Я проверяю event.pathParameters? event.pathParameters.itemId : null, существует ли указанный элемент c, и вызываю некоторую функцию getItem(itemdId), и если она не завершается, я вызываю функцию getAll().

Если я передаю идентификатор элемента в пути, он работает, но когда я делаю запрос на api.example.com/items/, я получаю следующую ошибку: not a valid key=value pair (missing equal-sign) in Authorization header. Это означает, что что-то не так в моем пути, и я должен передать идентификатор элемента в параметры пути.

Мой вопрос: Есть ли способ использовать несколько путей в * 1030? * area, или какой рекомендуемый способ решения этой проблемы (просто создать два отдельных обработчика)?

1 Ответ

1 голос
/ 09 апреля 2020

Есть два способа легко выполнить sh то, что вы ищете. Во-первых, лямбда-функции могут иметь несколько обработчиков. Вы можете добавить еще одно событие http в массив обработчиков, например, так:

get_items:
    handler: project/items/get.handler
    events:
      - http:
          path: items/{itemId}
          method: get
      - http:
          path: items/
          method: get

В качестве альтернативы вы можете использовать аргумент {proxy+}. Вы можете прочитать больше о различных методах прокси здесь

...