ServiceAddHTTP通过swaggerUI,为什么总是提示服务已存在

来源:5-20 服务管理 - 添加HTTP服务接口开发 - 数据入库(上)

qq_爱心li猴子_0

2022-12-17

老师您好,

关于在测试ServiceAddHTTP通过swaggerUI,按照您视频里面讲的不知道为什么总是提示服务已存在。希望老师能抽时间帮忙解答一下。
现象如下:

  1. 提示 服务已存在
    2图片描述
  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
	}
0
0

(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目

简历中摒弃烂大街的培训机构项目,带你开发企业级微服务网关

1316 学习 · 352 问题

查看课程