首页 > 其他分享 >go net/http包的使用

go net/http包的使用

时间:2023-04-06 22:14:36浏览次数:43  
标签:http fmt Println go 浏览器 net hello

前言:

Go语言标准库内建提供了net/http包,涵盖了HTTP客户端和服务端的具体实现。

使用net/http包,我们可以很方便地编写HTTP客户端或服务端的程序。

 

正文:

包的文档地址:https://go-zh.org/pkg/net/http

 

net/http 包 使用说明:

注册路由

http.HandleFunc("/index", getHandle)  

 

监听端口和启动服务

http.ListenAndServe("127.0.0.1:80", nil) 

 

请求处理

func getHandle(w http.ResponseWriter, r *http.Request) {

fmt.Println("hello http")      //输出到控制台

w.Write([]byte("hello world")) //输出到浏览器

}

 

示例1:实现简单的web服务

 

func getHandle(w http.ResponseWriter, r *http.Request) {

fmt.Println("hello http")      //输出到控制台

w.Write([]byte("hello world")) //输出到浏览器

}

main:

//注册路由

http.HandleFunc("/index", getHandle)

//监听

http.ListenAndServe("127.0.0.1:80", nil)

 

获取Request请求信息

func getHandle(w http.ResponseWriter, r *http.Request) {

fmt.Println("Method:", r.Method)  //Method: GET
fmt.Println("URL:", r.URL)      //URL: /index
fmt.Println("Body:", r.Body)     //Body: {}
fmt.Println("Header:", r.Header)   

//Header: map[Accept:[text/html,application/xhtml+xml...
fmt.Println("RemoteAddr:", r.RemoteAddr) //RemoteAddr: 127.0.0.1:55895

w.Write([]byte("hello world")) //输出到浏览器

}

去掉火狐浏览器请求两次的处理:

部分火狐浏览器开启了默认对 favicon的请求,这样就会自动请求两次。需要关闭掉。

 

去掉favicon.ico的请求,打开火狐浏览器

about:config

browser.chrome.site_icons  改为  false

 

自定义http服务

type myHandler struct{}

// 实现 ServeHttp接口

func (m myHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {

fmt.Println("hello ServeHTTP!")

w.Write([]byte("hello ServeHTTP!"))

}

 

func main()  {

var handler myHandler

//定义一个Server

server := http.Server{

Addr:    "127.0.0.1:7788",

Handler: handler,

}

err := server.ListenAndServe()

if err != nil {

  fmt.Println("err:", err)

}

}

 

完结

标签:http,fmt,Println,go,浏览器,net,hello
From: https://www.cnblogs.com/ypeih/p/17294397.html

相关文章

  • go cookie && session
    前言: HTTP协议是无状态的,所以用户的每一次请求都是无状态的,不知道在整个Web 操作过程中哪些连接与该用户有关。应该如何来解决这个问题呢?Web里面经典的解决方案是Cookie和Session。正文:cookie机制是一种客户端机制,把用户数据保存在客户端,而Session机制是一种服......
  • pycharm中配置MongoDB数据库出现未找到驱动程序类 'com.dbschema.MongoJdbcDriver' (v
      之前重新装了一下pycharm,发现MongoDB数据库连接时发生了错误。具体错误:未找到驱动程序类'com.dbschema.MongoJdbcDriver'(view)。这怎么解决呢?其实很简单,在驱动程序中选一个版本进行下载就好了。步骤如下:1、找到驱动程序,点击MongoDB,再点击+号。2、找到最新版本,点击下载......
  • .net webapi 客户端缓存 服务端缓存
    客户端缓存-ResponseCacheAttribute通过设置HTTP的响应头Cache-Control来完成页面存储到浏览器缓存中,如果请求在缓存有效期间就直接从浏览器缓存中取出数据。只需要在接口上方添加ResponseCacheAttribute特性即可设置客户端缓存。ResponseCacheAttribute可应用于:Razor......
  • 判断是否安装了Google地图
    判断是否安装了Google地图,没有弹出Dialog提示安装:/** *ForGoogleMapsCheck * *@return */ privatebooleanisGoogleMapsInstalled(){ try{ ApplicationInfoinfo=getPackageManager().getApplicationInfo( "com.google.andro......
  • (转)go深入:reflect 运行时反射
    原文:https://lingzihuan.icu/posts/go-13-depth-reflect/啥是反射go语言中,反射为我们提供了一种可以在运行时操作任意类型对象的能力,比如,查看一个接口变量的具体类型、看一个结构体有多少字段、修改某个字段的值等。比如 fmt.Println:funcPrintln(a...interface{})(nint,......
  • Visual Studio 2022 不支持 .NET Framework 4.5 项目的解决办法
    概述升级到VisualStudio 2022后,打开速度快了很多,开发体验也舒服很多。只是使用过程中遇到了一个比较尴尬的问题:默认VisualStudio2022不再支持安装.NETFramework4.5组件,如下图所示:选择组件里面已经不能选择4.5/4.0的框架了。此时如果打开基于.NETFramework4.5......
  • day7 golang GMP
    大名鼎鼎的GMP模型需要自行学习的知识:进程、线程、协程、多线程、线程池、io多路复用,内核态用户态,,同步阻塞异步非阻塞等等相关知识代码是在线程中运行的,协程也是,所以当协程阻塞的时候该线程也阻塞了,其他任务就无法调度了,该线程就死了。如何解决,那就需要让协程自由的在线程中移......
  • goodFeaturesToTrack
    一、goodFeaturesToTrack1、过程:1)函数查找图像中或指定图像区域中最突出的角点(1)函数使用cornerMinEigenVal或cornerHarris计算每个源图像像素的角点质量度量。(2)函数执行非最大值抑制(保留3x3邻域中的局部最大值)。(3)最小特征值小于qualityLevel*maxx,yqualityMeasureMap(x,y)......
  • Django之models
    常用字段and非常用字段autofieldint自增列,必须填入参数primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。但是这个基本咋没用过,建表也都是使用的默认idIntegerField一个整数类型,范围在-2147483648to2147483647CharField这个最常用,啥都能用他,......
  • 管理WEB服务器文件的WebDAV协议&HTTP大跃进--QUIC与HTTP30&WEB安全攻击概述
    管理WEB服务器文件的WebDAV协议WebADV协议    WEBDAV追加方法  WeDAV请求示例  HTTP大跃进--QUIC与HTTP30 QUIC&HTTP3.0   HTTP2.0的问题队头阻塞建立连接的握手延迟大QUIC的特性0RTT   没有队头阻塞的多路复用 ......