无服务器离线可选路径参数

7

我正在尝试设置一个带有可选参数的GET请求,但是当我在本地调用url时没有可选参数时会出错。但在lambda上在线工作正常。

我使用的是serverless版本1.24.1和serverless-offline插件版本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}"
   ]
}

非常感谢

4个回答

5

很遗憾,陈大超的答案没有成功:

出现了一个错误: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

1
在参数后加上“?”可以使其工作。
functions:
  getitems:
  handler: lambda.handler
  events:
    - http:
        path: item/store/{storeid}/{itemstatus?}
        method: get
        cors: true

这仅适用于1个可选路径参数。 - Mike Dubs

0

我使用了以下选项,它在有和没有参数的情况下都可以工作。

- http:
      path: auth/{role?}
      method: get
      request:
          parameter:
              paths:
                  role: false

0
如果您希望itemstatus是可选的,则必须在无服务器请求定义中将其设置为false,如下所示:
- http:
            path: item/store/{storeid}/{itemstaus}
            method: get
            cors: true
            request:
              parameter:
                storeid: true
                itemstatus: false

部署时出现错误:资源路径部分仅允许a-zA-Z0-9._-和花括号位于开头和结尾。(服务:AmazonApiGateway;状态代码:400;错误代码:BadRequestException) - Sielu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接