1、简单实现

server

package mainimport ("flag""net/http"
)func main() {host := flag.String("host", "127.0.0.1", "listen host")port := flag.String("port", "8080", "listen port")http.HandleFunc("/helloworld", helloworld)err := http.ListenAndServe(*host+":"+*port, nil)if err != nil {panic(err)}
}func helloworld(w http.ResponseWriter, req *http.Request) {w.Write([]byte("Hello World"))
}

client

package mainimport ("fmt""io/ioutil""net/http"
)func main() {response, _ := http.Get("http://localhost:8080/helloworld")defer response.Body.Close()body, err := ioutil.ReadAll(response.Body)if err != nil {panic(err)return}fmt.Println(string(body))
}

测试

运行服务器和客户端,打印Hello World
浏览器打开http://localhost:8080/helloworld,打印出Hello World
gitbash或者Linux终端,输入curl http://localhost:8080/helloworld

2、稍复杂的例子

package mainimport ("fmt""net/http""log"
)type MyHandler map[string]stringvar handler = MyHandler{"coco":"12"}func (this MyHandler) list(w http.ResponseWriter, req *http.Request) {for k,v := range this{fmt.Fprintf(w, "%s : %s\n", k,v)}
}func (this MyHandler) GetPrice(w http.ResponseWriter, req *http.Request) {price, ok := this["kaka"]if !ok {w.WriteHeader(http.StatusNotFound)fmt.Fprintf(w, "no such item: kaka\n")return}fmt.Fprintf(w, "kaka price:%s\n", price)
}func (this MyHandler) SetPrice(w http.ResponseWriter, req *http.Request) {price := "16"handler["kaka"] = pricefmt.Fprintf(w, "set new item price to %s\n", price)return
}func main() {mux := http.NewServeMux()mux.Handle("/list", http.HandlerFunc(handler.list))mux.Handle("/GetPrice", http.HandlerFunc(handler.GetPrice))mux.Handle("/SetPrice", http.HandlerFunc(handler.SetPrice))log.Fatal(http.ListenAndServe("localhost:8080", mux))
}

在gitbash或者Linux终端进行测试
curl http://localhost:8080/list
curl http://localhost:8080/SetPrice
curl http://localhost:8080/GetPrice

golang构建htpp服务相关推荐

  1. 经济学人使用Golang构建微服务历程回顾

    关键点 经济学人内容分发系统需要更大的灵活性,将内容传递给日益多样化的数字渠道.为了实现这一灵活性目标并保持高水平的性能和可靠性,平台从一个单体结构过渡到微服务体系结构. 用Go编写的服务是新系统的一 ...

  2. 用Golang构建gRPC服务

    本教程提供了Go使用gRPC的基础教程 在教程中你将会学到如何: 在.proto文件中定义一个服务. 使用protocol buffer编译器生成客户端和服务端代码. 使用gRPC的Go API为你的 ...

  3. golang 构建HTTP服务

    一个go最简单的Http服务器程序 package mainimport ("fmt""net/http" )func IndexHandler(w http. ...

  4. php brotobuf,用Golang构建gRPC服务

    根据官方文档要求需要提供一下环境支持 go环境已经搭建成功了,上一篇文章安装了protoc编辑器,现在只需要安装所需插件即可. 1.安装grpc所需要的插件:protoc-gen-go.protoc- ...

  5. protobuf协议_gRPC 使用 protobuf 构建微服务

    gRPC 使用 protobuf 构建微服务 发表于 2018-05-02 | 阅读次数: 2997 | 字数统计: 1,805 gRPC 使用 protobuf 通信构建微服务 本文目录: 微服务架 ...

  6. 构建微服务时的三大常见错误

      来自:分布式实验室 公众号,作者:解博 想在网上挨骂,最简单的方法就是写点关于微服务架构的东西.每个人对微服务都有自己的一套见解:无论我们是赞扬还是批评,总会有人跳出来强调"你错了&qu ...

  7. 【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!...

    写在前面 周末,跟阿里的一个朋友(去年晋升为P9了)聊了很久,聊的内容几乎全是技术,当然了,两个技术男聊得最多的话题当然就是技术了.从基础到架构,从算法到AI,无所不谈.中间又穿插着不少天马行空的想象 ...

  8. 使用Spring MVC 4构建Restful服务

    使用Spring MVC 4构建RESTful服务相对于其它框架来说,有很多优势.首先,Spring MVC 4作为Spring的框架之一,可以很好地与Spring进行集成.其次,Spring MVC ...

  9. Spring Cloud构建微服务架构-服务网关

    通过之前几篇Spring Cloud中几个核心组件的介绍,我们已经可以构建一个简略的(不够完善)微服务架构了.比如下图所示: 愿意了解源码的朋友直接求求交流分享技术 一零三八七七四六二六 我们使用Sp ...

最新文章

  1. 困扰一周的奇葩bug:重复相似代码多,导致单片机程序跑飞
  2. 以太坊创始人V 神:普通人看见现在,天才看见未来
  3. 英飞凌AI电磁越野组浅析
  4. 内置的数据无法实现高性能
  5. 第十四章 springboot + profile(不同环境读取不同配置)
  6. django笔记补充
  7. 【commons-httpclient】Java中HttpClient工具访问Web请求
  8. 深入剖析Android音频之AudioPolicyService
  9. 计算机视觉实战(五)图像梯度计算
  10. 通过分析词性进行人名、地名、组织的替换,生成新的狗屁不通文章
  11. 山寨芯片大鳄终于来了MTK6577 A9双核全功能通讯平板(2012年芯片,低端以A9双核为代表)
  12. 2020.10.20读 PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
  13. 史上最全的全国特产一览表,到哪就买当地最正宗的特产!!!
  14. FIL是否值得长期持有以及未来评估
  15. loss 加权_样本生而不等——聊聊那些对训练数据加权的方法
  16. c word to html 走样,打印机打印效果走样解决办法.pptx
  17. 全网功能最全的无水印短视频提取工具
  18. 使用Socket实现账号密码验证
  19. 计算机提示存储空间不足怎么办,电脑提示存储空间不足,无法处理此命令是什么原因?怎么解决?...
  20. 一个用户只能登录一次

热门文章

  1. linux搭建声纹识别,声纹识别SDK-FreeSR
  2. 不要说珍重,不要说再见,就这样,默默地离开。在炎炎的夏季,也正是因为有了思念,才有了久别重逢的欢畅
  3. c语言教学方法措施,C语言教学方法探讨
  4. matlab计算aqi代码,AQI计算第一课,爬取全部城市AQI数据的代码一样但是只能爬出第一个城市的数据是怎么回事?...
  5. ppp协议 服务器,PPP(点对点协议(Point to Point Protocol))_百度百科
  6. com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException UNAVAILABLE io exception
  7. MacOS Catalina 关闭和开启文件安全性检查
  8. sql 注入 预防_SQL注入:检测和预防
  9. vim命令模式和底线_VIM 底线命令模式
  10. 内边距padding