请求工具

概述

基于 net/http 包的请求工具包。

.GET()

功能 : 发起 GET 请求

参数 :

1. uri string // 请求地址
2. data map[string]string url 数据
3. headers map[string]string 请求 header 数据

示例 :

package main
import (
	"encoding/json"
	"fmt"
	"net/http"
	"strconv"
	"github.com/cnlesscode/gotool/request"
)
func main() {
	// 测试请求路由
	http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
		res, err := request.GET(
			"http://localhost:9001/",
			map[string]string{
				"name": "gotool",
				"age":  strconv.Itoa(18),
			},
			map[string]string{
				"token": "123456",
			})
		if err == nil {
			fmt.Printf("res: %v\n", res)
		}
	})
	// 被请求路由
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		// 获取 GET 参数
		queryData := r.URL.Query()
		name := queryData.Get("name")
		age := queryData.Get("age")
		// 获取 header 数据
		tk := r.Header.Get("token")
		fmt.Printf("tk: %v\n", tk)
		data := map[string]string{
			"method": r.Method,
			"name":   name,
			"age":    age,
		}
		dataByte, err := json.Marshal(data)
		if err == nil {
			w.Write(dataByte)
		}
	})
	// 启动服务
	err := http.ListenAndServe(":9001", nil)
	if err != nil {
		fmt.Printf("err: %v\n", err)
	}
}

.POST()

功能 : 发起 POST 请求

参数 :

1. uri string // 请求地址
2. data map[string]string POST 数据
3. headers map[string]string 请求 header 数据

示例 :

package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"strconv"

	"github.com/cnlesscode/gotool/request"
)

func main() {

	// 测试请求路由
	http.HandleFunc("/test", func(w http.ResponseWriter, r *http.Request) {
		res, err := request.POST(
			"http://localhost:9001/",
			map[string]string{
				"name": "gotool",
				"age":  strconv.Itoa(18),
			},
			map[string]string{
				"token": "123456",
			})
		if err == nil {
			fmt.Printf("res: %v\n", res)
		}
	})

	// 被请求路由
	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
		// 获取 POST 数据
		pd := make(map[string]string)
		r.ParseForm()
		for k, v := range r.PostForm {
			if len(v) < 1 {
				pd[k] = ""
			}
			pd[k] = v[0]
		}
		data := map[string]string{
			"method": r.Method,
			"name":   pd["name"],
			"age":    pd["age"],
		}
		dataByte, err := json.Marshal(data)
		if err == nil {
			w.Write(dataByte)
		}
	})

	// 启动服务
	err := http.ListenAndServe(":9001", nil)
	if err != nil {
		fmt.Printf("err: %v\n", err)
	}
}

.PUT()

功能 : 发起 PUT 请求

参数 :

1. uri string // 请求地址
2. data map[string]string POST 数据
3. headers map[string]string 请求 header 数据

示例 :

与 post 演示代码基本一致,只需要将 request.POST 改成 request.PUT 即可。

.DELETE()

功能 : 发起 DELETE 请求

参数 :

1. uri string // 请求地址
2. data map[string]string url 数据
3. headers map[string]string 请求 header 数据

示例 :

与 get 演示代码基本一致,只需要将 request.GET 改成 request.DELETE 即可。