Go语言实现HTTP服务
GO语言可以通过http模块创建一个http服务器主要方法如下:
http.HandleFunc
第一次参数路径名 第二个参数处理的函数名
如:http.HandleFunc("/", GetHanle)
http.ListenAndServe
第一个参数:监听的端口和服务地址
第二个参数:处理的方法http.ListenAndServe("0.0.0.0:8080", nil)
http.ListenAndServeTLS
参数1:地址和端口号
参数2:证书文件
参数3:私钥文件
参数3:处理方法http.ListenAndServeTLS("0.0.0.0:8080", "server.crt", "server.pem", nil)
完整代码:import ( "fmt" "net/http" ) func main() { http.HandleFunc("/", GetHanle) http.ListenAndServe("0.0.0.0:8080", nil) } func GetHanle(w http.ResponseWriter, r *http.Request) { fmt.Fprintln(w, "get 方法") }
如何返回JSON数据
通过以上方法实现了简单的get服务,但是只是返回的字符串,如果要返回JSON怎么做?func main() { http.HandleFunc("/", GetHanle) http.ListenAndServe("0.0.0.0:8080", nil) } func GetHanle(w http.ResponseWriter, r *http.Request) { //fmt.Fprintln(w, "get 方法") w.Header().Set("content-type", "text/json") msg := make(map[string]string) msg["code"] = "1" msg["msg"] = "正常" ret, _ := json.Marshal(msg) w.Write(ret) }
这样就返回了JSON数据
如何接受POST的请求
上面的方法只是简单的get请求,那么如何接受post请求呢?
func PostHanle(w http.ResponseWriter, r *http.Request) { r.ParseForm() username := r.Form.Get("username") password := r.Form.Get("password") msg := make(map[string]string) msg["username"] = username msg["password"] = password ret, _ := json.Marshal(msg) w.Write(ret) }
通过以上方法就可以获得Post参数,客户端发送数据的时候请求类型application/x-www-form-urlencoded
那么如何知道对方是什么请求呢,或则这个方法我只想接收POST请求。
通过r.Method返回的字符串可以判断当前用户请求的类型
代码如下:func PostHanle(w http.ResponseWriter, r *http.Request) { r.ParseForm() if r.Method == "POST" { //如果是POST 请求 username := r.Form.Get("username") password := r.Form.Get("password") msg := make(map[string]string) msg["username"] = username msg["password"] = password ret, _ := json.Marshal(msg) w.Write(ret) } else { fmt.Fprintln(w, "不支持类型") } }
Mac强制关机的5个办法嗨,我是Mac小仙。再好的电脑,也会碰到卡死或软件崩溃导致无法关机或重启的情况。试试这5个办法,最后那招可厉害了!1强制关机长按电源键,10秒左右。2强制断电shiftcontro
精密空调氟里昂漏了怎么办?众所周知,精密空调功率密度大所以体积发热量高,交换数据等精密仍然需要通过空调压缩机不断制冷来达到通信空调对环境温度的要求,而氟里昂通过水泵的运转,将乙二醇水溶液作为载冷剂进行室内室
家用空调科学使用常识设置使用注意事项。不要频繁的开关空调器,因为压缩机启动时候的电流是正常运行电流的很多倍,容易烧坏压缩机的电机。。请不要往空调器的室外机上放东西,以免产生空调的噪音,对空调器来说,是
搭配海思麒麟芯片手机目前现状最近看到过很多关于华为手机海思麒麟芯片的断供问题,比如网上说华为MATE40海思麒麟9000芯片很可能成为麒麟高端芯片的最后一代也有说国内芯片制造商加速升级制造高端芯片等等!我作为
OPPO新款5G手机realme(真我)Q2硬件参数详解最近在营业厅,见部分顾客纠结到底买5G还是4G?出现这个现象大多数是购买意向在1000元1500元之间的低端客户。因为在市场上1500元以上的基本上全部是5G手机,无论华为OPPO
VIVO5G手机X50X50PRO及X50PRO如何购买不后悔在很短的时间内,VIVO突发多款5G手机,从开年以来至少上市15款5G手机,价格也已经布局到1598元(官网参考价),感觉与X为齐头并进。今天主要谈谈VIVO的5G手机X50X50
VIVO新款实惠5G手机IQOOU3目前在一线品牌的5G手机中,价格在1500以内的分别是OPPOA72低配,红米NOTE9低配,OPPORealmeQ2,OPPORealmeV5低配,以上几个5G手机型号的具体配置
OPPO新款5G手机RENO5系列硬件参数详解OPPORENO5系列于2020年12月10日正式发布,目前还处于预订阶段。RENO5系列共有两个版本,分别是RENO5和RENO5PRO,这两个版本在配置方面最大区别就是处理器和
关于芯片机密数据,台积电三次改口,还是任正非有远见近些年随着科技的发展,很多领域对芯片的需求都是水涨船高,作为工业粮食,芯片的重要性不言而喻,小到蓝牙耳机大到飞机轮船,都离不开它的驱动。然而,由于美国对华为等中企的打压,打破了原有
锁定胜局?Note11凭什么?卢伟冰120W充电头真心很贵在前不久RedmiNote11发布会上,卢伟冰对外宣布,Note系列的全球出货量已累计约240000000部,其中在过去5个月的时间里,Note系列手机就新增了40000000部的
华为新款5G手机NOVA8SE华为NOVA系列的5G手机(nova7系列)从上市至今,我所在营业厅对这个系列的销售情况还比较不错,应该占有整体5G手机(包括OPPOVIVO和华为其它5G手机)销售的30,那么市