ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

抖音服务器

2022-05-16 13:34:20  阅读:213  来源: 互联网

标签:err fmt db json 抖音 user student 服务器


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

标签:err,fmt,db,json,抖音,user,student,服务器
来源: https://www.cnblogs.com/hcl6/p/16276626.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有