golang byte转string_golang系列——实战http服务器

94fec83d17c9ee57a8b22f9c43aff93a.png

上一篇讲解了client端相关的知识,这一篇讲解服务端。golang语言可以快速实现一个简单的server端,如下所示:

package 

上述代码就轻松实现一个监听本地8000端口的服务端。大家可能注意到,代码调用两个路由的处理函数:Handle和HandleFunc,大家可以任选一个使用。大多数情况下我们选择HandleFunc,因为其第二个参数是我们想要的处理函数;而Handle的第二个参数是一个handler对象,该对象必须实现ServeHTTP方法,我们在ServeHTTP方法中完成我们的处理逻辑,显然直接使用HandleFunc要方便一些。实际上从源码中可以看到HandleFunc最终也是调用了Handle函数完成操作。在接下来的代码中将只用HandleFunc进行演示。

假设做一个登录功能,结合上一篇文章的知识点,很容易写出client端的代码如下:

package 

那么服务端经过改造后得到如下代码:

package 

这就可以实现client端访问server端,当然也可以从浏览器直接访问。然而这种方式存在一些问题,在如下所示的HandleFunc函数的源码中发现其调用的实际上是默认的DefaultServeMux对象。

func 

那么如果我们只要自定义ServeMux对象,然后再调用HandleFunc函数就可以实现更加灵活的路由功能,接下来我们对mian函数进行改造。

func 

另外可以自定义server对象,设置读超时、写超时等多种参数。如下所示,我们声明一个server变量,设置超时时间为2秒。

func 

同时将login函数修改一下,产生3秒的睡眠,超过设置的2秒超时,服务器端则不会返回任何数据,所以此时client端也无法获取数据。

func 

下面演示一下client如何用POST方法向服务器提交数据,需要将GET方法修改成POST方法。

var 

而对应的server端需要在login函数中加上接受数据的逻辑即可:

func 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值