ServiceAddHTTP通过swaggerUI,为什么总是提示服务已存在
来源:5-20 服务管理 - 添加HTTP服务接口开发 - 数据入库(上)

qq_爱心li猴子_0
2022-12-17
老师您好,
关于在测试ServiceAddHTTP通过swaggerUI,按照您视频里面讲的不知道为什么总是提示服务已存在。希望老师能抽时间帮忙解答一下。
现象如下:
- 提示 服务已存在
2 - 错误提示
部分代码
func (service *ServiceController) ServiceAddHTTP(c *gin.Context) {
params := &dto.ServiceAddHTTPInput{}
if err := params.BindValidParam(c); err != nil {
middleware.ResponseError(c, 2000, err)
return
}
tx, err := lib.GetGormPool("default")
if err != nil {
middleware.ResponseError(c, 2001, err)
return
}
serviceInfo := &dao.ServiceInfo{ServiceName: params.ServiceName}
if _, err = serviceInfo.Find(c, tx, serviceInfo); err == nil {
fmt.Println(err)
fmt.Println(serviceInfo)
fmt.Println(params.ServiceName)
middleware.ResponseError(c, 2002, errors.New("服务已存在"))
return
}
httpUrl := &dao.HttpRule{RuleType: params.RuleType, Rule: params.Rule}
if _, err = httpUrl.Find(c, tx, httpUrl); err == nil {
middleware.ResponseError(c, 2003, errors.New("服务接入前缀或域名已存在"))
return
}
if len(strings.Split(params.IpList, "\n")) != len(strings.Split(params.WeightList, "\n")) {
middleware.ResponseError(c, 2004, errors.New("IP列表与权重列表数量不一致"))
return
}
middleware.ResponseSuccess(c, "")
}
写回答
1回答
-
幕粉orz
2023-07-30
刚刚遇到,原因是没验证返查询不到默认返回空字符串和0的情况,添加一个判断即可,
// 没有错误并且不为空
if serviceInfo, err = serviceInfo.Find(c, tx, serviceInfo); err = = nil && serviceInfo.ServiceName != "" { tx.Rollback() middleware.ResponseError(c, 2002, errors.New("服务已存在")) return }
00
相似问题