抖音服务器

服务器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

相关文章

抖音开通了商品橱窗怎么交保证金?打开手机上的抖音APP,点击...
抖音在哪里关注橱窗呢?让我们一起来看看吧,本篇经验将介绍...
抖音现在已经是人尽皆知的短视频平台,无论男女老少随处可见...
抖音怎样开启同步粉丝数量?抖音中绑定第三方账号后需要粉丝...
大家最近应该都知道了,抖音小店也可以用个人身份证来开店了...
近年来,随着抖音平台影响力的不断增强,越来越多的品牌和商...