Create 和 Update 方法有 99% 的代码是相同的,你们会写成一个方法,然后判断吗?
func (Self *apiService) CreateApi(form *param.AppApiForm) error {
err := Self.C.ValidateStruct(form)
if err != nil {
return err
}
apiExists := Self.Exists(form.AppId, form.Name, form.URL, "")
if apiExists {
return errors.New("相同的Api已经存在")
}
sApp := SApplication(Self.C)
exists, _ := sApp.Detail(form.AppId)
if exists.(*application.MApplication).Name == "" {
return errors.New("应用不存在")
}
return Self.Insert(&form)
}
func (Self *apiService) UpdateApi(form *param.AppApiForm, id string) error {
err := Self.C.ValidateStruct(form)
if err != nil {
return err
}
apiExists := Self.Exists(form.AppId, form.Name, form.URL, id) // 这里不同
if apiExists {
return errors.New("相同的Api已经存在")
}
sApp := SApplication(Self.C)
exists, _ := sApp.Detail(form.AppId)
if exists.(*application.MApplication).Name == "" {
return errors.New("应用不存在")
}
_, err = Self.Update(&form, id) // 这里不同
return err
}
从代码里面能看到大篇幅的相同代码。你们都是怎么做的呢?
相同的抽出来 然后给2个入口
一般我都是通过请求方式判断,创建是
post
更新应该是patch
或者put