serverless-offline 可选路径参数

Tom*_*nes 6 node.js serverless-framework serverless-framework-offline

我正在尝试使用可选参数设置 GET 请求,但是当我没有可选参数的情况下在本地调用 url 时出现错误。不过,它在 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
Run Code Online (Sandbox Code Playgroud)

这个网址有效:

http://localhost:3000/item/store/123456/used
Run Code Online (Sandbox Code Playgroud)

这不

http://localhost:3000/item/store/123456
Run Code Online (Sandbox Code Playgroud)

并给我这个输出

{
   statusCode: 404,
   error: "Serverless-offline: route not found.",
   currentRoute: "get - /item/store/123456",
   existingRoutes: [
       "get - item/store/{storeid}/{itemstatus}"
   ]
}
Run Code Online (Sandbox Code Playgroud)

非常感谢

小智 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
Run Code Online (Sandbox Code Playgroud)


Che*_*hao 1

添加 ”?” 参数可以使其工作后。

functions:
  getitems:
  handler: lambda.handler
  events:
    - http:
        path: item/store/{storeid}/{itemstatus?}
        method: get
        cors: true
Run Code Online (Sandbox Code Playgroud)