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)
添加 ”?” 参数可以使其工作后。
functions:
getitems:
handler: lambda.handler
events:
- http:
path: item/store/{storeid}/{itemstatus?}
method: get
cors: true
Run Code Online (Sandbox Code Playgroud)