• 抖音服务器


    服务器demo

    测试路由

    1. 浏览器url输入不能测试POST请求!!!看清楚是get请求再测

    login:1 GET http://127.0.0.1:8080/douyin/user/login 404 (Not Found)

    1. 修改完代码要马上重启服务
    2. 这是一个结构体(go里省略分号),Response(这也是结构体,里面有StatusCode,StatusMsg),一部分是自定义数据
    type TestResponse struct { //Response(里面有StatusCode,StatusMsg)
       Response
       CommentList []Comment `json:"comment_list,omitempty"`
       User        User      `json:"user"`
       UserId      int64     `json:"user_id,omitempty"`
       Token       string    `json:"token"`
       TestCode    int8      `json:"test_code"`
    }
    
    1. 在 Golang 的结构体定义中添加 omitempty 关键字,来表示这条信息如果没有提供,在序列化成 json 的时候就不要包含其默认值。(问题:内嵌结构体依然会显示;初始值等于默认值会隐藏。解决方法:改成指针)

    https://www.jianshu.com/p/a2ed0d23d1b0

    1. 为了将代码中的结构体与 json 数据解耦,通常我们会在结构体的 field 类型后加上解释说明(json:"test_code"),这样无论代码中的变量如何改变,我们都能成功将 json 数据解析出来。
      6.连接MySQL
      Go中文文档
    _ "github.com/go-sql-driver/mysql"
    "github.com/jmoiron/sqlx"
    
    db, err := sqlx.Connect("mysql", "root:root@(localhost:3306)/mydb")
    if err != nil {
       fmt.Printf("connect DataBase failed, err:%v\n", err)
       return
    }
    db.SetMaxOpenConns(20)
    db.SetMaxIdleConns(10)
    fmt.Printf("connect DataBase success\n")
    

    字节上课案例

    import (
       "database/sql"
       "fmt"
       "github.com/gin-gonic/gin"
       _ "github.com/go-sql-driver/mysql"
       "github.com/jmoiron/sqlx"
       "net/http"
    )
    
    func TestPOST(c *gin.Context) {
       db, err := sql.Open("mysql", "root:root@tcp(127.0.0.1:3306)/mydb")
       //username := "hcl"
       username, _ := c.GetPostForm("username")
       password, _ := c.GetPostForm("password")
       rows, err := db.Query("select * from user where username=? and password = ?", username, password)
       if err != nil {
          fmt.Println(err)
       }
       defer rows.Close()
       var users []Users
       for rows.Next() {
          var user Users
          err := rows.Scan(&user.Username, &user.Password)
          if err != nil {
             fmt.Println(err)
          }
          users = append(users, user)
       }
       fmt.Printf("%v", users)
       if rows.Err() != nil {
          fmt.Println(rows.Err())
       }
       c.JSON(http.StatusOK, TestDBResponse{
          Response: Response{StatusCode: 0, StatusMsg: "TestDB成功"},
          Users:    users,
       })
    }
    

    Gorm默认表名复数

    表名,列名如何对应结构体

    在Gorm中,表名是结构体名的复数形式,列名是字段名的蛇形小写。

    即,如果有一个user表,那么如果你定义的结构体名为:User,gorm会默认表名为users而不是user。

    db.SingularTable(true) // 如果设置为true,`User`的默认表名为`user`,使用`TableName`设置的表名不受影响
    

    这样的话,表名默认即为结构体的首字母小写形式。

    mysql语句
    create table student(id varchar(20),name varchar(20));
    insert into student (id,name) values("1","hcl");
    select *from student
    alter table student rename to students;
    
    type Student struct {
       Id   string
       Name string
    }
    
    func TestGorm(c *gin.Context) { //"gorm.io/driver/mysql"
       fmt.Println("TestGorm函数:")
       db, err := gorm.Open(
          mysql.Open("root:root@tcp(127.0.0.1:3306)/mydb"),
       )
       if err != nil {
          fmt.Println(err)
       }
      // db.SingularTable(true)用了这个数据库用Student
       var student Student
       db.First(&student, 1) // 根据整型主键查找
       //err = db.Select("id", "name").Find(&student, "1").Error
       c.JSON(http.StatusOK, TestDBResponse{
          Response: Response{StatusCode: 0, StatusMsg: "TestGorm成功"},
          Student:  student,
       })
    }
    

    image.png

    登陆网络异常,解决跨域的中间件函数

    https://copyfuture.com/blogs-details/20210730154453689A
    https://blog.csdn.net/eiuly/article/details/17081657?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-17081657-blog-97032653.pc_relevant_antiscanv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-17081657-blog-97032653.pc_relevant_antiscanv2&utm_relevant_index=2

  • 相关阅读:
    2019春总结作业
    第十二周作业及总结
    第十一周作业及总结
    第十周编程及总结
    第九周作业及总结
    第八周作业及总结
    第五周作业及总结
    第四周Java作业及总结
    第三周总结
    第二周总结
  • 原文地址:https://www.cnblogs.com/hcl6/p/16276626.html
Copyright © 2020-2023  润新知