本文实例讲述了Go语言Web编程实现Get和Post请求发送与解析的方法。分享给大家供大家参考,具体如下:

这是一篇入门文章,通过一个简单的例子介绍Golang的Web编程主要用到的技术。
文章结构包括:
1. Client-Get 请求
2. Client-Post 请求
3. Server 处理 Get 和 Post 数据
在数据的封装中,我们部分采用了json,因而本文也涉及到Golang中json的编码和解码。
一、Client-Get
复制代码 代码如下:package main
import (
"fmt"
"net/url"
"net/http"
"io/ioutil"
"log"
)
func main() {
u, _ := url.Parse("http://localhost:9001/xiaoyue")
q := u.Query()
q.Set("username", "user")
q.Set("password", "passwd")
u.RawQuery = q.Encode()
res, err := http.Get(u.String());
if err != nil {
log.Fatal(err) return
}
result, err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
log.Fatal(err) return
}
fmt.Printf("%s", result)
}
二、Client-Post
复制代码 代码如下:package main
import (
"fmt"
"net/url"
"net/http"
"io/ioutil"
"log"
"bytes"
"encoding/json"
)
type Server struct {
ServerName string
ServerIP string
}
type Serverslice struct {
Servers []Server
ServersID string
}
func main() {
var s Serverslice
var newServer Server;
newServer.ServerName = "Guangzhou_VPN";
newServer.ServerIP = "127.0.0.1"
s.Servers = append(s.Servers, newServer)
s.Servers = append(s.Servers, Server{ServerName: "Shanghai_VPN", ServerIP: "127.0.0.2"})
s.Servers = append(s.Servers, Server{ServerName: "Beijing_VPN", ServerIP: "127.0.0.3"})
s.ServersID = "team1"
b, err := json.Marshal(s)
if err != nil {
fmt.Println("json err:", err)
}
body := bytes.NewBuffer([]byte(b))
res,err := http.Post("http://localhost:9001/xiaoyue", "application/json;charset=utf-8", body)
if err != nil {
log.Fatal(err)
return
}
result, err := ioutil.ReadAll(res.Body)
res.Body.Close()
if err != nil {
log.Fatal(err)
return
}
fmt.Printf("%s", result)
}
三、Server
复制代码 代码如下:package main
import (
"fmt"
"net/http"
"strings"
"html"
"io/ioutil"
"encoding/json"
)
type Server struct {
ServerName string
ServerIP string
}
type Serverslice struct {
Servers []Server
ServersID string
}
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":9001", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
r.ParseForm() //解析参数,默认是不会解析的
fmt.Fprintf(w, "Hi, I love you %s", html.EscapeString(r.URL.Path[1:]))
if r.Method == "GET" {
fmt.Println("method:", r.Method) //获取请求的方法
fmt.Println("username", r.Form["username"])
fmt.Println("password", r.Form["password"])
for k, v := range r.Form {
fmt.Print("key:", k, "; ")
fmt.Println("val:", strings.Join(v, ""))
}
} else if r.Method == "POST" {
result, _:= ioutil.ReadAll(r.Body)
r.Body.Close()
fmt.Printf("%s\n", result)
//未知类型的推荐处理方法
var f interface{}
json.Unmarshal(result, &f)
m := f.(map[string]interface{})
for k, v := range m {
switch vv := v.(type) {
case string:
fmt.Println(k, "is string", vv)
case int:
fmt.Println(k, "is int", vv)
case float64:
fmt.Println(k,"is float64",vv)
case []interface{}:
fmt.Println(k, "is an array:")
for i, u := range vv {
fmt.Println(i, u)
}
default:
fmt.Println(k, "is of a type I don't know how to handle")
}
}
//结构已知,解析到结构体
var s Serverslice;
json.Unmarshal([]byte(result), &s)
fmt.Println(s.ServersID);
for i:=0; i<len(s.Servers); i++ {
fmt.Println(s.Servers[i].ServerName)
fmt.Println(s.Servers[i].ServerIP)
}
}
}
希望本文所述对大家Go语言程序设计有所帮助。
# Go语言
# Web编程
# Get
# Post
# 请求
# 发送
# 解析
# Go语言服务器开发实现最简单HTTP的GET与POST接口
# Go语言中利用http发起Get和Post请求的方法示例
# Go语言开发发送Get和Post请求的示例
# 详解Go语言中Get/Post请求测试
# 如何使用Golang发送Get和Post请求
# 这是
# 采用了
# 给大家
# 涉及到
# 所述
# 讲述了
# Set
# Query
# xiaoyue
# username
# passwd
# password
# user
# log
# ioutil
# io
# func
# localhost
# Parse
# RawQuery
相关文章:
教程网站设计制作软件,怎么创建自己的一个网站?
上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
潍坊网站制作公司有哪些,潍坊哪家招聘网站好?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
建站之星五站合一营销型网站搭建攻略,流量入口全覆盖优化指南
建站中国官网:模板定制+SEO优化+建站流程一站式指南
建站之星如何优化SEO以实现高效排名?
如何通过.red域名打造高辨识度品牌网站?
哈尔滨网站建设策划,哈尔滨电工证查询网站?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
宝塔建站助手安装配置与建站模板使用全流程解析
如何设计高效校园网站?
黑客入侵网站服务器的常见手法有哪些?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
成都网站制作报价公司,成都工业用气开户费用?
建站之星如何快速更换网站模板?
建站VPS选购需注意哪些关键参数?
宝塔面板创建网站无法访问?如何快速排查修复?
如何快速查询网址的建站时间与历史轨迹?
如何在IIS服务器上快速部署高效网站?
建站主机服务器选购指南:轻量应用与VPS配置解析
如何破解联通资金短缺导致的基站建设难题?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
制作宣传网站的软件,小红书可以宣传网站吗?
如何通过VPS建站无需域名直接访问?
如何在服务器上配置二级域名建站?
音响网站制作视频教程,隆霸音响官方网站?
济南专业网站制作公司,济南信息工程学校怎么样?
深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?
建站之星logo尺寸如何设置最合适?
公司网站设计制作厂家,怎么创建自己的一个网站?
智能起名网站制作软件有哪些,制作logo的软件?
如何选择高效稳定的ISP建站解决方案?
如何基于PHP生成高效IDC网络公司建站源码?
制作企业网站建设方案,怎样建设一个公司网站?
焦点电影公司作品,电影焦点结局是什么?
C#如何在一个XML文件中查找并替换文本内容
孙琪峥织梦建站教程如何优化数据库安全?
如何高效完成独享虚拟主机建站?
如何通过虚拟主机快速完成网站搭建?
C++中的Pimpl idiom是什么,有什么好处?(隐藏实现)
北京网站制作网页,网站升级改版需要多久?
如何用花生壳三步快速搭建专属网站?
官网网站制作腾讯审核要多久,联想路由器newifi官网
如何确保西部建站助手FTP传输的安全性?
建站之星手机一键生成:多端自适应+小程序开发快速建站指南
,石家庄四十八中学官网?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建
*请认真填写需求信息,我们会在24小时内与您取得联系。