Укажите несколько параметров пути к API-шлюзу (без сервера) - PullRequest
0 голосов
/ 21 июня 2020

У меня есть метод "DB_Update" в модуле.

Этот метод требует нескольких параметров в качестве входных (InputA, InputB и Input C)

module.exports.DB_Update = async (event) => 
{

    //extract Parameters from event
    InputA= event.pathParameters.InputA
    InputB= event.pathParameters.InputB
    InputC= event.pathParameters.InputC
   
    // Update Items in DB based on Input
    //...
}

Я хотел бы вызвать функцию через запрос API, используя serverless и AWS API Gateway

Следовательно, в моем бессерверный файл yml Я добавил функцию


DB_Update:
    handler: ../DB_Update
    events:
      - http:
          path: DB_Update/{InputA, InputB, InputB}
          method: get

и, наконец, я вызываю конечную точку через Postman, используя параметры

http://localhost:3000/dev/DB_Update/InputA=9783404163809&InputB=111&InputC=BB

Однако независимо от какое чередование я пробую, у меня не получается. Либо yml не принимает комбинацию входных параметров, либо я не получаю обратно объект события.

Следовательно, было бы здорово, если бы вы могли дать мне подсказку, как заставить эту работу . Спасибо!

Ответы [ 2 ]

1 голос
/ 23 июля 2020

Ответ выше дает отличный ответ. Только одно замечание, что на самом деле вам не нужно указывать параметры в запросе параметров пути. Что-то вроде этого достаточно:

DB_Update:
    handler: ../DB_Update
    events:
      - http:
          path: DB_Update/{InputA}/{InputB}/{InputC}
          method: get

Также вы можете смешивать путь и параметры запроса, так что вы можете получить что-то вроде этого:

    handler: ../DB_Update
    events:
      - http:
          path: DB_Update/{InputD}
          method: get
          request:
            parameters:
              querystrings:
                InputA: true
                InputB: true
                InputC: true
1 голос
/ 21 июня 2020

Вам необходимо решить, хотите ли вы передать параметры как параметры пути (например, baseurl/{varA}/{varB}/{varC}) или параметры запроса (например, baseurl?varA=x&varB=y&varC=z). Этот ответ дает некоторое представление о различных шаблонах.

В зависимости от того, какой шаблон вы выберете, параметры запроса должны быть включены в файл serverless.yml в следующем формате (установите для полей значение true, если они требуются, false, если необязательно):

Параметры пути

DB_Update:
    handler: ../DB_Update
    events:
      - http:
          path: DB_Update/{InputA}/{InputB}/{InputC}
          method: get
          request:
            parameters:
              paths:
                InputA: true
                InputB: true
                InputC: true

Параметры запроса:

DB_Update:
    handler: ../DB_Update
    events:
      - http:
          path: DB_Update
          method: get
          request:
            parameters:
              querystrings:
                InputA: true
                InputB: true
                InputC: true

Посетите этот раздел документации Serverless Framework для получения дополнительной информации.

...