unit test finished
parent
12a0c78983
commit
641b73c56c
|
@ -0,0 +1,52 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
"net/url"
|
||||||
|
)
|
||||||
|
|
||||||
|
// 全局公用链接,请求频率比较频繁
|
||||||
|
//var (
|
||||||
|
// client = http.Client{
|
||||||
|
// Transport: &http.Transport{DisableKeepAlives: false},
|
||||||
|
// }
|
||||||
|
//)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
apiUrl := "http://127.0.0.1:9090/query"
|
||||||
|
apiParseUrl, err := url.Parse(apiUrl) //url不带参数传入,返回一个结构体
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("url parse err:", err)
|
||||||
|
}
|
||||||
|
data := url.Values{}
|
||||||
|
data.Set("name", "王奥")
|
||||||
|
data.Set("age", "18") //set url中带参的数据
|
||||||
|
paramStr := data.Encode() //编码
|
||||||
|
apiParseUrl.RawQuery = paramStr //赋值到url的结构体中,组成完整的url编码对象
|
||||||
|
//自定义client 禁用keepalive 适用于请求频率不频繁,每次请求生成一个短链接,之后释放
|
||||||
|
tr := http.Transport{DisableKeepAlives: true} //短链接
|
||||||
|
client := http.Client{
|
||||||
|
Transport: &tr,
|
||||||
|
}
|
||||||
|
//生成请求对象
|
||||||
|
req, err := http.NewRequest("GET", apiParseUrl.String(), nil)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("start new req err:", err)
|
||||||
|
}
|
||||||
|
//如果使用默认client:
|
||||||
|
//http.DefaultClient.Do(req)
|
||||||
|
//发送自定义请求
|
||||||
|
resp, err := client.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer resp.Body.Close() //关闭请求体
|
||||||
|
//读取返回体
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println("read resp body err:", err)
|
||||||
|
}
|
||||||
|
fmt.Println("resp body:", string(body))
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
//http client
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
resp, err := http.Get("http://127.0.0.1:9090/query?name=sb&age=12") //没办法自定义请求参数和client
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
body, err := io.ReadAll(resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
fmt.Println(string(body))
|
||||||
|
}
|
|
@ -2,6 +2,7 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
)
|
)
|
||||||
|
@ -16,9 +17,23 @@ func f1(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func f2(w http.ResponseWriter, r *http.Request) {
|
||||||
|
//对于GET请求,query param参数都放在url,请求体中没有数据
|
||||||
|
queryParam := r.URL.Query()
|
||||||
|
name := queryParam.Get("name")
|
||||||
|
age := queryParam.Get("age")
|
||||||
|
fmt.Println(name, age) //自动识别url中的问号中的参数
|
||||||
|
fmt.Println(r.URL)
|
||||||
|
fmt.Println(r.Method)
|
||||||
|
fmt.Println(io.ReadAll(r.Body))
|
||||||
|
w.Write([]byte("success"))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// http server
|
// http server
|
||||||
func main() {
|
func main() {
|
||||||
http.HandleFunc("/web", f1)
|
http.HandleFunc("/web", f1)
|
||||||
|
http.HandleFunc("/query", f2)
|
||||||
http.ListenAndServe("127.0.0.1:9090", nil)
|
http.ListenAndServe("127.0.0.1:9090", nil)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
package Splitstring
|
||||||
|
|
||||||
|
import "strings"
|
||||||
|
|
||||||
|
//切割字符串
|
||||||
|
//example
|
||||||
|
// abc,b =>[a,c]
|
||||||
|
|
||||||
|
//func Split(str string, sep string) []string {
|
||||||
|
// tmp := make([]string, 0)
|
||||||
|
// for _, v := range str {
|
||||||
|
// if string(v) == sep {
|
||||||
|
// continue
|
||||||
|
// } else {
|
||||||
|
// tmp = append(tmp, string(v))
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// return tmp
|
||||||
|
//}
|
||||||
|
|
||||||
|
// abc,b =>[a,c]
|
||||||
|
|
||||||
|
func Split(str string, sep string) []string {
|
||||||
|
ret := make([]string, 0)
|
||||||
|
index := strings.Index(str, sep)
|
||||||
|
for index >= 0 {
|
||||||
|
ret = append(ret, str[:index])
|
||||||
|
str = str[index+1:]
|
||||||
|
index = strings.Index(str, sep)
|
||||||
|
}
|
||||||
|
ret = append(ret, str)
|
||||||
|
return ret
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
package Splitstring
|
||||||
|
|
||||||
|
import (
|
||||||
|
"reflect"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
//单元测试,测试每个函数的功能是否正常
|
||||||
|
|
||||||
|
func TestSplit(t *testing.T) {
|
||||||
|
got := Split("babcbef", "b")
|
||||||
|
want := []string{"", "a", "c", "ef"}
|
||||||
|
if !reflect.DeepEqual(want, got) {
|
||||||
|
t.Errorf("want:%v, but got:%v\n", want, got)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestSplit2(t *testing.T) {
|
||||||
|
got := Split("a:b:c", ":")
|
||||||
|
want := []string{"a", "b", "c"}
|
||||||
|
if !reflect.DeepEqual(want, got) {
|
||||||
|
t.Errorf("want:%v, but got:%v\n", want, got)
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue