首页 > 其他分享 >Golang 接收Get、Post请求

Golang 接收Get、Post请求

时间:2023-07-31 17:14:56浏览次数:27  
标签:http err nil Get Golang param1 return Post func

Get

1、接收

func GetGet(w http.ResponseWriter, r *http.Request) {
    defer func() {
        r.Body.Close()

        if r := recover(); r != nil {
            stackBytes := debug.Stack()
            fmt.Println("r", r, "Error", stackBytes)
        }
    }()
    r.ParseForm()

    defer func() {
        // 自定义返回内容
        backData := struct {
            Code int
            Msg  string
        }{
            200,
            "success",
        }
        bytes, err := json.Marshal(backData)
        if err != nil {
            fmt.Fprint(w, nil)
            return
        }
        w.Write(bytes)
    }()

    // param
    param1 := r.Form.Get("param1")

    // todo something
}

2、发送

func send() {
    param1 := "param1"
    resp, err := http.Get(fmt.Sprintf("http://127.0.0.1:8080?param1=%s", param1))
    if err != nil {
        log.Println("http.Get err=", err)
        return
    }

    bytes, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Println("ioutil.ReadAll err=", err)
        return
    }
}

Post

1、接收

func PostGet(w http.ResponseWriter, r *http.Request) {
    defer func() {
        r.Body.Close()

        if r := recover(); r != nil {
            stackBytes := debug.Stack()
            fmt.Println("r", r, "Error", stackBytes)
        }
    }()
    r.ParseForm()

    defer func() {
        // 自定义返回内容
        backData := struct {
            Code int
            Msg  string
        }{
            200,
            "success",
        }
        bytes, err := json.Marshal(backData)
        if err != nil {
            fmt.Fprint(w, nil)
            return
        }
        w.Write(bytes)
    }()

    // must post
    if r.Method != http.MethodPost {
        w.WriteHeader(http.StatusMethodNotAllowed)
        return
    }
    
    // param
    paramMap := make(map[string]string)
    _ = json.NewDecoder(r.Body).Decode(&paramMap)

    param1Str := paramMap["param1"]

    // todo something
}

2、发送

func PostSend() {
    sendStruct := struct {
        Param1 string `json:"param1"`
    }{
        "param1",
    }
    sendData, _ := json.Marshal(sendStruct)
    fmt.Println("sendData", string(sendData))
    resp, err := http.Post("http://127.0.0.1:8080", "application/json", bytes2.NewBuffer(sendData))
    if err != nil {
        fmt.Println("post err", err)
        return
    }
    defer resp.Body.Close()

    backBytes, err := io.ReadAll(resp.Body)
    if err != nil {
        log.Println("io.ReadAll err=", err)
        return
    }
}

 

标签:http,err,nil,Get,Golang,param1,return,Post,func
From: https://www.cnblogs.com/zyfeng/p/17593877.html

相关文章

  • Apipost教程?一篇文章玩转Apipost
    你是否经常遇到接口开发过程中的各种问题?或许你曾为接口测试与调试的繁琐流程而烦恼。不要担心!今天我将向大家介绍一款功能强大、易于上手的接口测试工具——Apipost,并带你深入了解如何玩转它,轻松实现接口测试与调试。什么是Apipost?Apipost是一款API全生命周期管理平台,它提供了......
  • 码力全开!请查收HDC.Together 2023亮点日程
     <主题演讲>                                     <技术交流与互动>                                     ......
  • elementUI 日期控件报错 TypeError: dateObject.getTime is not a function
    <el-form-itemlabel="日期"prop="date"><el-time-pickerv-model="form.date"type="date"placeholder="选择时间"style="width:100%;"></el-time-picker></el-form-item>date:[......
  • postgresql | sql语句表名和列名引号问题
    根据您提供的SQL查询语句:SELECT*FROM"features"WHERE"layer"="FSHFAC"LIMIT10;在语法上看起来没有问题,但在实际运行时可能会出现一些问题,这取决于数据库和数据表的结构。表名和列名引号:在SQL中,使用双引号""可以将标识符(例如表名、列名等)加以引号。但是,要确保......
  • evhttp post get 处理
    evhttp处理POST请求的技巧-爱码网(likecs.com)evhttp是libevent提供的一个轻量级的基于消息驱动的HTTPServer,详细的资料可以参考libevent的主页:http://monkey.org/~provos/libevent/ ,本文主要描述如何处理POST请求。 美中不足:evhttp不支持POST?evhttp在evhttp_request接......
  • postgresql的相关利用
    有比较多的安全设备或者web系统使用postgresql作为数据库,研究postgresql数据库如何getshell将有很大帮助外联postgresql默认本地连接(5432端口),远程连接需要找到postgres安装目录下的/data/pg_hba.conf,在IPv4配置处加上:hostallall192.168.0.1/24scram-sha-256之后重启post......
  • kernel: oracle (xxxx): Using mlock ulimits for SHM_HUGETLB is deprecated
    Oracle数据库运行在linux6/7中,启用大页之后,我们经常在/var/log/messages里面会看到类似这样的记录:Jul3109:46:27p1erpdb01kernel:oracle(6444):UsingmlockulimitsforSHM_HUGETLBisdeprecated.-------官方文档HowToAddanon-rootgrouptohugetlb_shm_grou......
  • getent
    getent查询DNS名称服务器中的命名空间语法getent[选项]主机名或域名选项-h#显示帮助信息-n#不解析DNS名称-p#打印解析过程-s#只输出有关已知主机的信息-t#指定DNS查询类型(默认为NXDOMAIN)-U#使用顶级域名服务器-V#显示版......
  • golang-groutine有序调度
    本质上还是通过channel的队列性质(FIFO)来实现的,以这个思路为主。1functest1(){2varwgsync.WaitGroup34varch1=make(chanint,1)5varch2=make(chanint,1)6varch3=make(chanint,1)7varprintSelffunc(pCont......
  • Postgresql 在Ubuntuserver 22.04上部署
    安装与卸载系统环境:1.ubuntu22.04server安装1.检查是否已经安装#psql服务sudoservicepostgresqlstatus#版本查看psql--version2.安装命令#更新安装源内容sudoapt-getupdate#postgresql-contrib额外特性安装sudoaptinstallpostgresqlpostgresql......