Bonjour,
Je suis plutôt habitué au langage type "class-oriented", et j’ai un peu de peine avec Go.
avec une structure comme celle-ci pour la création d’une API:
- main.go
app/
- app.go
endpoints/
- users.go
Le code:
Donc mon main.go:
package main
import "winxaito/app"
func main(){
a := app.App{}
a.InitializeDatabase("**", "**", "**")
a.InitializeRouter()
a.Run(":8080")
}
app.go
package app
import(
/* *** */
)
type App struct{
Router *mux.Router
DB *sql.DB
}
func (a *App) InitializeDatabase(user, password, dbname string) {
/* ... */
}
func (a *App) InitializeRouter() {
a.Router = mux.NewRouter().StrictSlash(true)
a.Router.HandleFunc("/", apiHome).Methods("GET")
}
func (a *App) Run(addr string) {
log.Fatal(http.ListenAndServe(addr, a.Router))
}
func RespondWithJSON(w http.ResponseWriter, code int, payload interface{}){
response, _ := json.Marshal(payload)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(code)
w.Write(response)
}
users.go
package endpoints
import(
/* *** */
)
func apiGetUser(w http.ResponseWriter, r *http.Request) {
//Accès à la base de données dans App
}
func InitUsersRoute() {
//Initialisation des routes, appelé par app.go ?
}
Comment est-ce que je peux appelé InitUsersRoute() - dans users.go
depuis InitializeRouter() - dans app.go
et pouvoir accédé à App.DB
depuis apiGetUser() - dans users.go
?
Premier problème, avec les imports j’ai des boucles cyclique, et comment accédé à l’instance de App
contenant ma DB ?
Je vous remercie.
+0
-0