我正在尝试使用可选参数设置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}"
]
}
非常感谢
答案 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