api的编写大同小异,都是利用gin.Context中的Prarm方法来获取字段,然后在去service包中传入相对应的参数然后进行处理,最后使用c.JSON(http.StatusOK, response.SuccessMsg(groups))发送成功消息给前端。
几乎每一个api的样子都是这样的,下面举一个例子,用于得到那个聊天群
func GetGroup(c *gin.Context) {uuid := c.Param("uuid")groups, err := service.GroupService.GetGroups(uuid)if err != nil {c.JSON(http.StatusOK, response.FailMsg(err.Error()))return}c.JSON(http.StatusOK, response.SuccessMsg(groups))}
写接口的时候要注意返回值,还要约定的code,在这里,其实最重要的是调用service包中的函数
在这些函数中,大部分是利用gorm进行增删查改,比如举例子,就像上述api调用的
func (g *groupService) GetGroups(uuid string) ([]response.GroupResponse, error) {db := pool.GetDB()migrate := &model.Group{}pool.GetDB().AutoMigrate(&migrate)//让表一直是最新状态migrate2 := &model.GroupMember{}pool.GetDB().AutoMigrate(&migrate2)var queryUser *model.Userdb.First(&queryUser, "uuid = ?", uuid)if queryUser.Id <= 0 {return nil, errors.New("用户不存在")}var groups []response.GroupResponsedb.Raw("SELECT g.id AS group_id, g.uuid, g.created_at, g.name, g.notice FROM group_members AS gm LEFT JOIN `groups` AS g ON gm.group_id = g.id WHERE gm.user_id = ?",queryUser.Id).Scan(&groups)return groups, nil}
基本上都差不多是这样的,只是逻辑上有点不一样,所以今天就到这里了。
