serverless-offline可选路径参数

时间:2017-11-29 16:16:10

标签: node.js serverless-framework serverless-framework-offline

我正在尝试使用可选参数设置GET请求但是当我在没有可选参数的情况下调用网址本地时出现错误。虽然它在lambda上运行良好。 我做错了什么?

我正在使用无服务器版本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

此网址有效:

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}"
   ]
}

非常感谢

3 个答案:

答案 0 :(得分:1)

添加"?"在params可以使它工作。

var modelresult = searchresult1.View.ProductName;

答案 1 :(得分:0)

不幸的是,陈大超的回答失败了:

  

发生错误:ApiGatewayResourceExperimentExperimentVeriParresizeVar-   资源的路径部分仅允许使用-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

答案 2 :(得分:0)

如果您希望itemstatus是可选的,则必须在无服务器请求定义中将其设置为false,如下所示:

- http:
            path: item/store/{storeid}/{itemstaus}
            method: get
            cors: true
            request:
              parameter:
                storeid: true
                itemstatus: false