如果用上述的方法的话,我们需要把所有的参数一个个直接拼接在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。