这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战
写在前面
与前一章一样,我们这个步骤也是需要jwt鉴权的,因为你要知道是谁创建了商品,所以我们要在请求头上加上 token 连同 data 的信息一起传来创建商品
1.1 路由接口注册
- post 请求
1 | go复制代码authed.POST("product", api.CreateProduct) |
1.2 接口函数编写
1.2.1 service层
- 定义一个创建商品的服务结构体
1 | go复制代码type CreateProductService struct { |
- 定义一个创建商品的
create
方法
传入进来的有id
是上传者的id
,file
和fileSize
是上传的商品图片以及其图片大小。
1 | go复制代码func (service *CreateProductService)Create(id uint,file multipart.File,fileSize int64) serializer.Response { |
1.2.2 api层
- 定义创建商品的对象
1 | go复制代码createProductService := service.CreateProductService{} |
- 获取token,并解析当前对象的id
1 | go复制代码claim ,_ := util.ParseToken(c.GetHeader("Authorization")) |
- 获取传送过来的文件
1 | go复制代码file , fileHeader ,_ := c.Request.FormFile("file") |
- 绑定上下文数据
1 | go复制代码c.ShouldBind(&createProductService) |
- 执行创建对象下的
create()
方法,传入用户的id
,文件
以及文件大小
等
1 | go复制代码res := createProductService.Create(claim.ID,file,fileSize) |
1.3 服务函数编写
编写创建商品的服务函数
- 验证用户
1 | go复制代码 var boss model.User |
- 上传图片到七牛云
1 | go复制代码status , info := util.UploadToQiNiu(file,fileSize) |
- 获取分类
1 | go复制代码model.DB.Model(&model.Category{}).First(&category,service.CategoryID) |
- 构建商品对象
1 | go复制代码product := model.Product{ |
- 在数据库中创建
1 | go复制代码err := model.DB.Create(&product).Error |
- 返回序列化的商品信息
1 | go复制代码 return serializer.Response{ |
1.4 验证服务
- 发送请求
- 请求响应
本文转载自: 掘金