2 changed files with 58 additions and 0 deletions
@ -0,0 +1,3 @@
|
||||
// Package goweb -
|
||||
// Ce package est une librairie d'utilitaires pour la création d'applications web
|
||||
package goweb |
@ -0,0 +1,55 @@
|
||||
package goweb |
||||
|
||||
import ( |
||||
"net/http" |
||||
|
||||
"forge.cadoles.com/wpetit/goweb/middleware" |
||||
"forge.cadoles.com/wpetit/goweb/service" |
||||
"forge.cadoles.com/wpetit/goweb/service/template" |
||||
"forge.cadoles.com/wpetit/goweb/template/html" |
||||
"github.com/go-chi/chi" |
||||
) |
||||
|
||||
func Example_usage() { |
||||
|
||||
// Exemple d'utilisation de la librairie "goweb" pour la mise en place
|
||||
// d'une application web avec injection de dépendances - ici un moteur de templates.
|
||||
|
||||
// On créait un conteneur de service vide
|
||||
container := service.NewContainer() |
||||
|
||||
// On expose le service "template" avec l'implémentation
|
||||
// basée sur le moteur de rendu HTML de la librairie standard
|
||||
container.Provide(template.ServiceName, html.ServiceProvider("./templates")) |
||||
|
||||
router := chi.NewRouter() |
||||
|
||||
// On utilise le middleware "ServiceContainer" pour exposer
|
||||
// le conteneur de service dans nos requêtes
|
||||
router.Use(middleware.ServiceContainer(container)) |
||||
|
||||
// On créait un handler pour la page d'accueil
|
||||
router.Get("/", ServeHomePage) |
||||
|
||||
if err := http.ListenAndServe(":3000", router); err != nil { |
||||
panic(err) |
||||
} |
||||
|
||||
} |
||||
|
||||
func ServeHomePage(w http.ResponseWriter, r *http.Request) { |
||||
|
||||
// On récupère le conteneur de service depuis le contexte de la requête
|
||||
container, err := middleware.GetServiceContainer(r.Context()) |
||||
if err != nil { |
||||
panic(err) |
||||
} |
||||
|
||||
// On récupère le service "template" depuis le conteneur de service
|
||||
templateService := template.Must(container) |
||||
|
||||
// On utilise notre
|
||||
if err := templateService.RenderPage(w, "my-template.html.tmpl", nil); err != nil { |
||||
panic(err) |
||||
} |
||||
} |
Loading…
Reference in new issue