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