https://www.liwenzhou.com/posts/Go/go_http/

http-server(API)

  1. package main
  2. import (
  3. "fmt"
  4. "net/http"
  5. )
  6. func HealthCheck(writer http.ResponseWriter, request *http.Request) {
  7. str := "server ok"
  8. //接收请求
  9. fmt.Println(request.URL)
  10. fmt.Println(request.Body)
  11. fmt.Println(request.Method)//GET POST
  12. //返回结果
  13. writer.Write([]byte(str))
  14. }
  15. func main() {
  16. http.HandleFunc("/hello", func(writer http.ResponseWriter, request *http.Request) {
  17. writer.Write([]byte("hello world"))
  18. })
  19. http.HandleFunc("/healthCheck", HealthCheck)
  20. http.ListenAndServe("0.0.0.0:8080", nil)
  21. }

http-client

  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "io/ioutil"
  6. "net/http"
  7. "net/url"
  8. "os"
  9. )
  10. func main() {
  11. //rsp, err := http.Get("http://127.0.0.1:8080/healthCheck")
  12. //if err != nil {
  13. //
  14. //}
  15. //rs, err := ioutil.ReadAll(rsp.Body)
  16. //if err != nil {
  17. //
  18. //}
  19. //fmt.Println(string(rs))
  20. //接受完请求要关闭
  21. //rsp.Body.Close()
  22. //组装请求
  23. data := url.Values{}
  24. urlObj, _ := url.ParseRequestURI("http://127.0.0.1:8080/healthCheck")
  25. data.Set("A", "测试")
  26. urlStr := data.Encode()
  27. fmt.Println(urlStr)
  28. //A=%E6%B5%8B%E8%AF%95
  29. //中文会转化为编码
  30. urlObj.RawQuery = urlStr
  31. req, err := http.NewRequest("GET", urlObj.String(), nil)
  32. if err != nil {
  33. }
  34. //添加请求头
  35. req.Header.Add("","")
  36. resp, err := http.DefaultClient.Do(req)
  37. if err != nil {
  38. }
  39. rsp, _ := ioutil.ReadAll(resp.Body)
  40. fmt.Println(string(rsp))
  41. //接受完请求要关闭
  42. resp.Body.Close()
  43. //post请求
  44. http.PostForm("url", url.Values{"id": {"11"}})
  45. //上传文件
  46. http.Post("url","image/jpeg",*io.Reader)
  47. //json
  48. data=`{"name":"test","age":10}`
  49. resp,err:=http.Post("url","application/json",strings.NewReader(data))
  50. if err != nil {
  51. }
  52. rsp, _ := ioutil.ReadAll(resp.Body)
  53. fmt.Println(string(rsp))
  54. resp.Body.Close()
  55. }