最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

go - the delete request is not working(rest-api) - Stack Overflow

programmeradmin2浏览0评论

all requests are working correctly, but for some reason the delete request is not
enter image description here

func deleteUser(db *sql.DB) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
       vars := mux.Vars(r)
       id := vars["id"]

       var u User
       err := db.QueryRow("SELECT * FROM users WHERE id = $1", id).Scan(&u.Id, &u.Name, &u.Email)
       if err != nil {
          w.WriteHeader(http.StatusBadRequest)
          return
       } else {
          _, err = db.Exec("DELETE FROM users WHERE id = $1", id)
          if err != nil {
             w.WriteHeader(http.StatusBadRequest)
             return
          }
          json.NewEncoder(w).Encode("User deleted")
       }
    }
}
func main() {
    db, err := sql.Open("postgres", os.Getenv("DATABASE_URL"))
    if err != nil {
       log.Fatal(err)
    }
    defer db.Close()
    _, err = db.Exec("CREATE TABLE IF NOT EXISTS users (id SERIAL PRIMARY KEY, name TEXT, email TEXT)")
    if err != nil {
       log.Fatal(err)
    }
    router := mux.NewRouter()
    router.HandleFunc("/api/go/users", getUsers(db)).Methods("GET")
    router.HandleFunc("/api/go/users", createUser(db)).Methods("POST")
    router.HandleFunc("/api/go/users/{id}", getUser(db)).Methods("GET")
    router.HandleFunc("/api/go/users/{id}", updateUser(db)).Methods("PUT")
    router.HandleFunc("/api/go/users/{id}", deleteUser(db)).Methods("DELETE")

    enhacedRouter := enableCORS(jsonContentTypeMiddleware(router))

    log.Fatal(http.ListenAndServe(":1010", enhacedRouter))
}
func enableCORS(h http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
       w.Header().Set("Access-Control-Allow-Origin", "*")
       w.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS, PUT, DELETE")
       w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Authorization")
       if r.Method == "OPTIONS" {
          w.WriteHeader(http.StatusOK)
          return
       }

       h.ServeHTTP(w, r)
    })

}

I noticed that in one of the queries the word WHERE is missing, adding it has not changed anything, apparently the program does not reach this section.

发布评论

评论列表(0)

  1. 暂无评论