goweb

package module
v0.0.0-...-4a8add1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 15, 2023 License: AGPL-3.0 Imports: 0 Imported by: 0

README

goweb

Librairie d'aide à la création d'applications web pour Go

Librairie en cours de développement. Des changements d'API peuvent intervenir à tout moment.

Documentation

https://godoc.org/gitlab.com/wpetit/goweb

License

AGPL-3.0

Documentation

Overview

Package goweb - Ce package est une librairie d'utilitaires pour la création d'applications web

Example (Usage)
package main

import (
	"net/http"

	"github.com/go-chi/chi"
	containerMiddleware "gitlab.com/wpetit/goweb/middleware/container"
	"gitlab.com/wpetit/goweb/service"
	"gitlab.com/wpetit/goweb/service/template"
	"gitlab.com/wpetit/goweb/template/html"
)

func main() {

	// 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éé 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(
		html.NewDirectoryLoader("./templates"),
	))

	router := chi.NewRouter()

	// On utilise le middleware "ServiceContainer" pour exposer
	// le conteneur de service dans nos requêtes
	router.Use(containerMiddleware.ServiceContainer(container))

	// On créé un handler pour la page d'accueil
	router.Get("/", ServeHomePage)

	if err := http.ListenAndServe(":3000", router); err != nil {
		panic(err)
	}

}

// ServeHomePage - Sert la page d'accueil de l'application
func ServeHomePage(w http.ResponseWriter, r *http.Request) {

	// On récupère le conteneur de services depuis le contexte de la requête
	container := containerMiddleware.Must(r.Context())

	// On récupère le service "template" depuis le conteneur de service
	templateService := template.Must(container)

	// On utilise notre service de template
	if err := templateService.RenderPage(w, "my-template.html.tmpl", nil); err != nil {
		panic(err)
	}
}
Output:

Directories

Path Synopsis
cli
example
Package service - Propose une implémentation simple d'un conteneur de service afin de permettre l'injection de dépendances dans les applications web
Package service - Propose une implémentation simple d'un conteneur de service afin de permettre l'injection de dépendances dans les applications web
session
template

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL