- 可以在环境中设置代理goproxy.cn避免国内下包出错
最开始可以先对一个端口18080启动一个服务:
package mainimport (
"log"
"net/http"
)func index(w http.ResponseWriter, r *http.Request) {}func main() {
//启动一个http服务 指明ip和端口
server := http.Server{
Addr: "127.0.0.1:18080",
}
//响应访问http://localhost:18080/的请求
http.HandleFunc("/", index)
//监听对应的端口 & 启动服务
if err := server.ListenAndServe();
err != nil {
log.Println(err)
}
}
效果:
文章图片
没有404,说明服务启动成功。
添加响应
接下来,我们在index这个func可以添加响应:
func index(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hey this is LiberHom"))
}
传递json数据
【用原生Go写一个自己的博客-搭建项目】当然,实际开发一般不会是这么简单的文字,而是一些web页面,需要给前端返回json信息,我们需要在Header中指明是json。
func index(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
w.Write([]byte("hey this is LiberHom"))
}
效果:
文章图片
我们可以构造完整一些的例子如下:
package mainimport (
"encoding/json"
"log"
"net/http"
)//构造一些数据
type IndexData struct {
Title string `json:"title"`
Descstring `json:"desc"`
}func index(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "application/json")
var indexData IndexData
indexData.Title = "Liber-Blog"
indexData.Desc = "this is the desc part"
//把结构体实例转成对应的json
jsonStr, _ := json.Marshal(indexData)
w.Write(jsonStr)
}func main() {
//启动一个http服务 指明ip和端口
server := http.Server{
Addr: "127.0.0.1:18080",
}
//响应访问http://localhost:18080/的请求
http.HandleFunc("/", index)
//监听对应的端口 & 启动服务
if err := server.ListenAndServe();
err != nil {
log.Println(err)
}
}
运行结果如下:
文章图片
参考: bilibili
推荐阅读
- 极客时间-Go进阶训练营|全新升级第4期|完结无密
- golang操作clickhouse使用入门
- Go的省略符 omitempty和 - 两种方式详解
- 使用Shifu在OpenYurt集群中接入RTSP协议摄像头
- golang metrics各个指标含义
- 如何用Shifu来接入一个私有驱动的物联网设备
- 在Golang中连接两个字符串的不同方法
- 在Golang中比较字符串的不同方法
- Golang中var关键字和短声明运算符之间的区别