golang http库的使用 并发 get post请求处理

Python023

golang http库的使用 并发 get post请求处理,第1张

我们这里是通过网站 聚合数据 获取到的公共API接口,也可以直接访问 https://baidu.com 来进行测试,但是效果不佳

如果用上述的方法的话,我们需要把所有的参数一个个直接拼接在url后,非常不方便也不美观,所以我们可以调用url.Values库来达到我们想要的效果

解析json结果数据的大概思路就是,先定义一个结构体,结构体中定义我们想要的字段名和字段类型,然后通过json.Unmarshal方法进行解析

得到数据

响应结果

可以看到 name和age已经被我们添加到请求头中了

建立一个post连接

post请求不同于get请求,需要将params跟在url后面

post请求的参数和url是作为两个参数存在的

过程和上边的差不多,只不过要先建立一个map(json),然后将json转化为byte,再将byte转化为io.Reader类型

响应结果

在处理并发时,为了防止多端修改数据造成紊乱,使用锁的方法进行解决

运行之后,访问localhost:8080/hello 我们访问页面会发现有count is 0的字样,并且每刷新一次就加1

用Post,不要用PostForm,至於编码可以自己用2楼的方法然后urlencode,附上代码片段

resp, err := http.Post(reqUrl,"application/x-www-form-urlencoded",strings.NewReader(fmt.Sprintf("__VIEWSTATE=%s&__EVENTVALIDATION=%s&txtUid=000000000&txtPwd=xxxxxxxx&selKind=1&selKind=1&btLogin=%B5%C7%C2%BD",url.QueryEscape(viewstate),url.QueryEscape(eventvalidation),)),)

上一章节介绍了使用echo启动一个http服务器并提供一个简单的GET接口,这一章对请求与响应做一下详细的讲解。

了解请求与响应之前首先要知道ehco框架提供了一个Context接口,Context 表示当前 HTTP 请求的上下文,我们需要知道的是Context的实现结构体context,context中包含了请求(request)、响应(response)以及参数等结构体,context是一个内部结构体,但是对外提供了访问的方法,我们可以在开发中使用context提供的方法做很多事情,比如获取请求路径、客户端ip、请求参数等等。

request是包含了当前请求信息的结构体,我们从中可以获取到前后端约定好的参数来作出相应的业务逻辑,这下面开始模拟请求

首先模拟一个添加用户的POST请求,这里使用了c.bind()这个方法,这个方法起到的作用是把表单参数或者JSON参数绑定至对应的结构体(这里必须是指针类型),字段需要一一对应,也就是说前端需要传递的表单或JSON参数名为name、age、gender才能绑定到结构体中。

接下来模拟一个GET请求用来获取用户信息

response是包含了返回信息的结构体,echo提供了多种类型的返回结果

上面编写了处理请求的handler,这里介绍一下如何把handler注册到路由中,这里对应的就是上面handler。