无服务器 - 挡线可选路径参数



我正在尝试使用可选参数设置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

此URL有效:

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

非常感谢

不幸的是,陈达乔的答案失败了:

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

添加"?"参数可以使其正常工作。

functions:
  getitems:
  handler: lambda.handler
  events:
    - http:
        path: item/store/{storeid}/{itemstatus?}
        method: get
        cors: true

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

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

我使用了以下选项,并且与参数一起使用

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

相关内容

  • 没有找到相关文章

最新更新