我的代码中有两个简单的api方法。具有 endpoind 的方法创建用户。领域是独一无二的。当我尝试使用数据库中已经存在的相同用户名创建用户时,我在控制台中出现错误:/api/user/createusername
(/home/andrej/go/src/go_contacts/models/users.go:19)
[2020-12-23 22:03:10] pq: duplicate key value violates unique constraint "users_username_key"
我想显示此错误以响应用户,或者以某种方式识别代码中的错误类型,以便为用户显示不同的错误消息。我只知道,如果我有错误,返回我id = 0。但对于用户来说,这似乎不是一个好消息。user
main.go
package main
import (
"fmt"
"go_contacts/controllers"
"net/http"
"os"
"github.com/gorilla/mux"
"github.com/joho/godotenv"
)
func main() {
godotenv.Load(".env")
router := mux.NewRouter()
router.HandleFunc("/", controllers.ReturnHello).Methods("GET")
router.HandleFunc("/api/user/create", controllers.CreateUser).Methods("POST")
port := os.Getenv("PORT")
if port == "" {
port = "8000"
}
err := http.ListenAndServe(":"+port, router)
if err != nil {
fmt.Print(err)
}
}
models.go使用用户结构:
package models
import (
u "go_contacts/utils"
"github.com/jinzhu/gorm"
)
// User base model
type User struct {
gorm.Model
Username string `json:"username" gorm:"unique"`
Password string `json:"password"`
Email string `json:"email"`
}
// Create new user
func (user *User) Create() map[string]interface{} {
GetDB().Create(user)
if user.ID <= 0 {
return u.Message(false, "Failed to create user, connection error.")
}
response := u.Message(true, "Account has been created")
response["user"] = user
return response
}
吃鸡游戏
蝴蝶不菲
当错误已返回时,从延迟函数返回错误
请求错误与响应错误分不清。
在一个Flask响应中返回下载并呈现的页面
跨域是属于请求错误还是响应错误?
相关分类