登录
首页 >  Golang >  Go问答

使用无服务器调用函数时传递 JSON

来源:stackoverflow

时间:2024-04-13 20:03:35 298浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《使用无服务器调用函数时传递 JSON》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我正在使用无服务器运行一个用 go 编写的 lambda 函数,并且我想在调用它时向它传递几个参数。

这是我创建的用于接收请求的结构:

type requeststruct struct {
    startat int `json:"startat"`
    endat   int `json:"endat"`
}

在处理程序中,我尝试打印出值:

func handler(ctx context.context,request requeststruct) (response, error) {
    fmt.printf("request: %v",request)

我尝试使用 --raw 选项调用它,所以我尝试这样做

serverless 调用 -f 命令 --raw -d '{"startat":1533513600,"endat":1534118399}'

我尝试将其用双引号括起来

serverless 调用 -f 命令 --raw -d "{startat:1533513600,endat:1534118399}"

serverless 调用 -f 命令 --raw -d "{\"startat\":1533513600,\"endat\":1534118399}"

我收到了所有三个错误:

{
    "errorMessage": "json: cannot unmarshal string into Go value of type main.RequestStruct",
    "errorType": "UnmarshalTypeError"
}

我不确定我做错了什么,我可以在网上找到任何示例,只有这个无服务器文档关于如何进行调用,以及这个 aws 文档关于如何在 go 中处理事件

更新 我尝试从 aws 控制台调用该事件并且它有效,因此问题很可能出在无服务器调用命令中。


解决方案


我找到了解决这个问题的方法,将 json 放在文件中而不是命令本身中,这并不能解决我在问题中遇到的问题,但这是使用 json 调用函数的一种方法

我添加了一个包含 json 数据的 events/startandend.json 文件:

{
    "startat":1533513600,
    "endat":1534118399
}

并在调用命令中引用该文件:serverless invoke -f order --path events/startandend.json

如果您在通过 npm 运行命令时遇到此问题。我在调用它时也遇到了类似的错误:

"invoke": "serverless invoke --function myfunction --data \"{ \"records\": []}\"",

通过将 data 上的双引号更改为单引号,它突然开始工作:

"invoke": "serverless invoke --function myfunction --data '{ \"Records\": []}'",

今天关于《使用无服务器调用函数时传递 JSON》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>