为API网关(无服务器)提供多个路径参数

时间:2020-06-21 09:17:26

标签: javascript aws-api-gateway serverless

我在模块中有方法“ DB_Update”

此方法需要几个参数作为输入(InputA,InputB和InputC)

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
    //...
}

我想使用 serverless AWS API网关

通过API请求调用该功能

因此在我的无服务器yml文件中,我添加了该功能


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

最后,我使用参数通过邮递员调用了端点

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

但是,无论我尝试哪种轮换方式,我都无法正常工作。 yml不接受输入参数的组合,或者我没有得到事件对象。

因此,如果您能给我一个提示如何完成这项工作,那就太好了。谢谢!

2 个答案:

答案 0 :(得分:1)

您需要确定是否要将参数作为路径参数(例如baseurl/{varA}/{varB}/{varC})或查询参数(例如baseurl?varA=x&varB=y&varC=z)进行传递。 This answer提供了有关不同模式的更多见解。

根据您决定的模式,请求参数应以以下格式包含在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

访问无服务器框架文档的this section,以获取更多信息。

答案 1 :(得分:1)

以上答案很好。请注意,您实际上不必在请求路径参数的情况下指定参数。像这样的东西就足够了:

services-container

您还可以混合使用路径和查询参数,因此可以得到以下内容:

company-container