gpt4 book ai didi

go - 如何使用golang通过 postman 快速获取表单数据?

转载 作者:IT王子 更新时间:2023-10-29 02:09:53 28 4
gpt4 key购买 nike

我正在使用 postman 检索表单数据,但是代码太长了。有什么方法可以获取短格式的数据吗?这是我正在使用的代码:

客户结构:

type Customer struct {
FirstName string `json:"first_name" bson:"first_name"`
LastName string `json:"last_name" bson:"last_name"`
Email string `json:"email" bson:"email"`
}
type Customers []Customer

type new_user struct {
first_name string
last_name string
email string
}

获取路由调用的表单数据的函数:

function GetData(c *gin.Context){
first_name := c.PostForm("first_name")
last_name := c.PostForm("last_name")
email := c.PostForm("email")
reqBody := new(new_user)
err := c.Bind(reqBody)
if err != nil {
fmt.Println(err)
}
customer.FirstName = first_name
customer.LastName = last_name
customer.Email = email
}

我得到 3 个表单值。假设我需要获取 50 个值,那么函数就会大得多。

最佳答案

你可以自己解析HTTP请求体,喜欢下面

选项 1:

import (
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin/json"
"log"
)
type Customer struct {
FirstName string `json:"first_name" bson:"first_name"`
LastName string `json:"last_name" bson:"last_name"`
Email string `json:"email" bson:"email"`
}

func process(context *gin.Context) {
var customer = &Customer{}
req := context.Request
err := json.NewDecoder(req.Body).Decode(customer)
if err != nil {
log.Fatal()
}
}

选项 2:

编码映射到解码结构(不推荐)

import (
"github.com/gin-gonic/gin"
"encoding/json"
"bytes"
"log"
)


type Customer struct {
FirstName string `json:"first_name" bson:"first_name"`
LastName string `json:"last_name" bson:"last_name"`
Email string `json:"email" bson:"email"`
}

func Process(context *gin.Context) {

req := context.Request
var aMap = map[string]interface{}{}
for key, values := range req.PostForm {
aMap[key]=values[0]
}

var buf = new(bytes.Buffer)
err := json.NewEncoder(buf).Encode(aMap)
if err != nil {
log.Fatal(err)
}
var customer = &Customer{}
json.NewDecoder(buf).Decode(customer)
if err != nil {
log.Fatal(err)
}
}

关于go - 如何使用golang通过 postman 快速获取表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50041902/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com