代码结构优化

一、优化main函数的匿名函数(对函数结构进行优化)

  1. package main
  2. import (
  3. "net/http"
  4. )
  5. func userLogin(writer http.ResponseWriter, request *http.Request) {
  6. //数据库操作
  7. //逻辑处理
  8. //restapi json/xml 返回
  9. //1.获取前端传递的参数
  10. //mobile,passwd
  11. //如何获取参数
  12. //解析参数
  13. request.ParseForm()
  14. mobile := request.PostForm.Get("mobile")
  15. passwd := request.PostForm.Get("passwd")
  16. loginOk := false
  17. if mobile == "15313311315" && passwd == "123456" {
  18. loginOk = true
  19. }
  20. str := `{"code":0,"data":{"id":1,"token":"test"},"msg":"登录成功"}`
  21. if !loginOk {
  22. //返回失败的JSON
  23. str = `{"code":-1,"data":"","msg":"密码不正确"}`
  24. }
  25. //设置header 为JSON 默认的text/html,所以特别指出返回的为application/json
  26. writer.Header().Set("Content-Type", "application/json")
  27. //设置200状态
  28. writer.WriteHeader(http.StatusOK)
  29. //输出
  30. writer.Write([]byte(str))
  31. }
  32. func main() {
  33. //把前端请求的格式和封装处理函数进行绑定的标签
  34. //绑定请求和处理函数
  35. http.HandleFunc("/user/login", userLogin)
  36. //启动web服务器
  37. http.ListenAndServe(":8080", nil)
  38. }

二、优化返回Json代码

  1. package main
  2. import (
  3. "encoding/json"
  4. "log"
  5. "net/http"
  6. )
  7. func userLogin(writer http.ResponseWriter, request *http.Request) {
  8. //数据库操作
  9. //逻辑处理
  10. //restapi json/xml 返回
  11. //1.获取前端传递的参数
  12. //mobile,passwd
  13. //如何获取参数
  14. //解析参数
  15. request.ParseForm()
  16. mobile := request.PostForm.Get("mobile")
  17. passwd := request.PostForm.Get("passwd")
  18. loginOk := false
  19. if mobile == "15313311315" && passwd == "123456" {
  20. loginOk = true
  21. }
  22. if loginOk {
  23. //{"id":1,"token":"xx"}
  24. data := make(map[string]interface{})
  25. data["id"] = 1
  26. data["token"] = "test"
  27. Resp(writer, 0, data, "登录成功")
  28. } else {
  29. Resp(writer, -1, nil, "密码不正确")
  30. }
  31. }
  32. type H struct {
  33. Code int
  34. Msg string
  35. Data interface{}
  36. }
  37. func Resp(w http.ResponseWriter, code int, data interface{}, msg string) {
  38. //设置header 为JSON 默认的text/html,所以特别指出返回的为application/json
  39. w.Header().Set("Content-Type", "application/json")
  40. //设置200状态
  41. w.WriteHeader(http.StatusOK)
  42. //定义一个结构体
  43. h := H{
  44. Code: code,
  45. Msg: msg,
  46. Data: data,
  47. }
  48. //将结构体转化成JSON字符串
  49. ret, err := json.Marshal(h)
  50. if err != nil {
  51. log.Println(err.Error())
  52. }
  53. //输出
  54. w.Write([]byte(ret))
  55. }
  56. func main() {
  57. //把前端请求的格式和封装处理函数进行绑定的标签
  58. //绑定请求和处理函数
  59. http.HandleFunc("/user/login", userLogin)
  60. //启动web服务器
  61. http.ListenAndServe(":8080", nil)
  62. }

8、代码结构优化 - 图1

三、优化结构体返回结果集

8、代码结构优化 - 图2

8、代码结构优化 - 图3