话不多说直接上代码,解读内容全部在代码中

1、处理请求方式

package main

import (
"fmt"
"io/ioutil"
"net/http"
"net/url"
"strings"
) //这个文件是对于net/http包的解读 func httpGet() {
//func Get(url string) (resp *Response, err error)
resp, err := http.Get("http://localhost:5379/ParseForm?id=1&name=zhangsan")//这里直接调用了http里面的get函数,传入对应url即可 返回的是http包中的respoonse类型
if err != nil {
// handle error
} defer resp.Body.Close() //一定要关闭返回的response中的body
body, err := ioutil.ReadAll(resp.Body) //读取body中的信息
if err != nil {
// handle error
} fmt.Println(string(body))
} func httpPost() {
//func Post(url string, bodyType string, body io.Reader) (resp *Response, err error)
resp, err := http.Post("http://localhost:5379/FormValue",
"application/x-www-form-urlencoded",
strings.NewReader("name=cjb")) //这里的第二个参数是传入参数的类型,第三个参数固定类型为io.Reader类型,因此调用了strings包中的func NewReader(s string) *Reader 转化为io.Reader类型
if err != nil {
fmt.Println(err)
} defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
} fmt.Println(string(body))
} func httpPostForm() {
//func PostForm(url string, data url.Values) (resp *Response, err error)
resp, err := http.PostForm("http://localhost:5379/hello",
url.Values{"key": {"Value"}, "id": {"123"}}) //第二个参数规定的类型是url包中的Values类型 type Values map[string][]string if err != nil {
// handle error
} defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
} fmt.Println(string(body)) } //这里一般是处理复杂的请求,比如要设置请求头以及一些请求信息时调用
func httpDo() { client := &http.Client{} //实例化client结构体 //func NewRequest(method, urlStr string, body io.Reader) (*Request, error) //第一个是请求方法,第二个是请求地址,第三个是请求的参数,这里依旧调用了string保重的对应方法转化为对应得数据类型
req, err := http.NewRequest("POST", "http://localhost:5379/hello", strings.NewReader("name=cjb"))
if err != nil {
// handle error
} //设置请求投信息
req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
req.Header.Set("Cookie", "name=anny") resp, err := client.Do(req) defer resp.Body.Close() body, err := ioutil.ReadAll(resp.Body)
if err != nil {
// handle error
} fmt.Println(string(body))
} func main() {
httpGet()
httpPost()
// httpPostForm()
// httpDo()
}

  2、处理接口请求参数

package main
import(
"fmt"
"net/http"
"log"
"io"
) //这里是对解析接口请求参数进行解析
func ParseForm(w http.ResponseWriter,r *http.Request){
//http包中的Request类型中有一个字段是Form这个字段只有调用了 ParseForm()函数才会起作用
//Form这个字段的类型是url.Values 也就是这个type Values map[string][]string
err:= r.ParseForm() //func (r *Request) ParseForm() error 这个函数将解析URL中的查询字符串,并将解析结果更新到r.Form字段
if err!=nil{
log.Fatal(err)
}
for i,v :=range r.Form{
fmt.Fprintln(w,i,v) }
} func FormValue(w http.ResponseWriter,r *http.Request){
//func (r *Request) FormValue(key string) string 调用该函数获取指定参数的值
name := r.FormValue("name")
str := "name:" + name
io.WriteString(w,str)
} //这个是获取文件上传方式的参数值
//func (r *Request) FormFile(key string) (multipart.File, *multipart.FileHeader, error)
//FormFile返回以key为键查询r.MultipartForm字段得到结果中的第一个文件和它的信息。
//如果必要,本函数会隐式调用ParseMultipartForm和ParseForm。查询失败会返回ErrMissingFile错误 //这个是多文件上传时调用的
//func (r *Request) MultipartReader() (*multipart.Reader, error)
//如果请求是multipart/form-data POST请求,MultipartReader返回一个multipart.Reader接口,否则返回nil和一个错误。
//使用本函数代替ParseMultipartForm,可以将r.Body作为流处理。
func main(){
http.HandleFunc("/ParseForm",ParseForm)
http.HandleFunc("/FormValue",FormValue)
http.ListenAndServe(":5379",nil)
}

  

go中处理各种请求方式以及处理接口请求参数的更多相关文章

  1. java Web中页面跳转方式之重定向和请求转发的区别

    请求转发: request.getRequestDispatcher().forward(); 重定向: response.sendRedirect(); 例如: 请求转发: request.getR ...

  2. android中用get和post方式向服务器提交请求

    通过get和post方式向服务器发送请求首先说一下get和post的区别get请求方式是将提交的参数拼接在url地址后面,例如http://www.baidu.com/index.jsp?num=23 ...

  3. http状态码+http请求方式

    一.http状态码 2开头 (请求成功)表示成功处理了请求的状态代码. 200   (成功)  服务器已成功处理了请求. 通常,这表示服务器提供了请求的网页. 201   (已创建)  请求成功并且服 ...

  4. Feign服务调用请求方式及参数总结

    前言 最近做微服务架构的项目,在用feign来进行服务间的调用.在互调的过程中,难免出现问题,根据错误总结了一下,主要是请求方式的错误和接参数的错误造成的.在此进行一下总结记录.以下通过分为三种情况说 ...

  5. 对get post等http请求方式的理解

    本文是关于get,post等几种请求方式的资料搜集和学习,HTTP,HTTP2协议的涉及点,然后提到了socket协议,RPC 先是和朋友的一些交流对话,问着问着就到了我的知识盲区.需要恶补一下这方面 ...

  6. HTTP请求方式之POST和GET的区别

    GET请求方式: 如果我们的网页收集到的用户数据,他规定了,此网页用户数据用GET的请求方式去处理的话,我们会发现,比如百度,就是一个很经典的GET请求方式 当我们在百度搜索上输入一个‘java’,点 ...

  7. JAVAEE 和项目开发(第三课:HTTP的请求头和请求方式)

    HTTP 协议之请求格式   请求格式的结构:请求行:请求方式.请求的地址和 HTTP 协议版本 请求头:消息报头,一般用来说明客户端要使用的一些附加信息 空行: 位于请求行和请求数据之间,空行是必须 ...

  8. 【spring springmvc】这里有你想要的SpringMVC的REST风格的四种请求方式

    概述 之前的文章springmvc使用注解声明控制器与请求映射有简单提到过控制器与请求映射,这一次就详细讲解一下SpringMVC的REST风格的四种请求方式及其使用方法. 你能get的知识点 1.什 ...

  9. 聊聊 HTTP 常见的请求方式

    在互联网已经渗透了生产.生活各个角落的今天,人们可以登录微信语音聊天,可以随手"扫"到各种功能的二维码,可以通过方便快捷的无人超市购物--这种互联网领域的跨越式发展,不仅满足了人们 ...

随机推荐

  1. python-django框架-电商项目-购物车模块开发_20191125

    python-django框架-电商项目-购物车模块开发 商品详情页js代码: 在商品详情页,有加入购物车按钮, 点击加减号可以增加减少,手动输入也可以, 点击加入购物车,就要加过去, 先实现加减的操 ...

  2. JavaScript学习总结(一)基础部分

    转自:http://segmentfault.com/a/1190000000652749 基本概念 javascript是一门解释型的语言,浏览器充当解释器. js执行引擎并不是一行一行的执行,而是 ...

  3. 关于angular跳转路由之后不能自动回到顶部的解决方法

    Question: angular2 scroll top on router change 当我们在第一个路由滑动到底部当我们点击导航跳转到另一个路由时页面没有回到顶部而是保持上一个路由的滚动位置, ...

  4. 网购分期不还 N种恶果等着你

    N种恶果等着你" title="网购分期不还 N种恶果等着你"> 网购市场狂飙突进的发展,让每个人都享受到随时随地购物的乐趣,也在很大程度上推动商品之间的流通.目前 ...

  5. CSS 双飞翼布局

    10 Jul 2016 » CSS 双飞翼布局:总共分三栏,左侧栏Left,中间主栏Main,右侧栏Right 第一步,建立三个div,不过注意,中间Main需要加一个wrap div. 整个结构看起 ...

  6. Android API Levels

    Android API Levels(转) 在本文中 API的级别是什么? 在Android中使用API级别 开发者需要考虑的内容 应用程序的向前兼容性 应用程序的向后兼容性 平台版本和API级别的选 ...

  7. MySQL 的 RowNum 实现(排行榜计算用户排名)

    1. 计算用户排名最高效的方法 例如:通过用户分享个数排名,那么自己的排名就是:比自己分享数多的用户个数 + 1 ' and `count` > '自己分享个数' 缺点:当多个用户分享个数相同的 ...

  8. Python爬虫-百度模拟登录(二)

    上一篇-Python爬虫-百度模拟登录(一) 接上一篇的继续 参数 codestring codestring jxG9506c1811b44e2fd0220153643013f7e6b1898075 ...

  9. Python——10模块

    */ * Copyright (c) 2016,烟台大学计算机与控制工程学院 * All rights reserved. * 文件名:text.cpp * 作者:常轩 * 微信公众号:Worldhe ...

  10. Spring Cloud Feign 组成和配置

    Feign的组成 接口 作用 默认值 Feign.Builder Feign的入口 Feign.Builder Client Feign底层用什么去请求 和Ribbon配合时:LoadBalancer ...