努力学习围棋
我的测试项目
我正在构建一个简单的 API 来与轻型 SQL 数据库进行通信。
我创建了这个函数,它从数据库表中获取所有主机。
据我所知,我的函数应该接受一个指向数据库的指针并返回给我 http.HandlerFunc。
func (h HostController) GetAllHosts(db *sql.DB) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
var host entities.Host
var hosts []entities.Host
var errorMessage entities.Error
rows, err := db.Query("SELECT * FROM hosts WHERE hosts = ?", host)
if err != nil {
errorMessage.Message = "Error: Get all hosts"
utils.SendError(w, http.StatusInternalServerError, errorMessage)
return
}
defer rows.Close()
for rows.Next() {
err := rows.Scan(&host.ID, &host.Uuid, &host.Name, &host.IPAddress)
if err != nil {
errorMessage.Message = "Error: (Get all hosts) Can't scan rows"
utils.SendError(w, http.StatusInternalServerError, errorMessage)
return
}
hosts = append(hosts, host)
}
////If hosts slice is empty -> no data in database
if len(hosts) == 0 {
errorMessage.Message = "No found hosts in database"
utils.SendError(w, http.StatusInternalServerError, errorMessage)
return
}
//Convert containers content to JSON representation
w.Header().Set("Content-Type", "application/json")
utils.SendSuccess(w, hosts)
}
}
现在,到这里一切都应该很好,但我不知道如何在 main.go 构建布局上实现它:
.
├── controllers
│ └── hostcontroller.go
│
└── main.go
这就是我试图在 main.go 上实现它的方式
package main
import (
"examProg/config"
"examProg/controllers"
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
_ "github.com/mattn/go-sqlite3"
)
我不明白如何实现 http.HandlerFunc 🙃
守着星空守着你
相关分类