Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Problème: Créer un server reast-api le plus simple, lisible et propre possible. Faire quelque chose de basique (le serveur rest-api étant quelque chose de petit (micro service par exemple) qui ne demande pas beaucoup en compléxité.
- // Ma dernière réfléxion:
- // Ne pas se dire qu'on créer un Server, mais simplement un Handler, donc on supprime le field http.Server de notre structure, et la fonction New retourne le Handler. Libre a l'utilisateur de construire son http.Server, et utiliser notre Handler dessus.
- // Exemple et remarques (dans le cas ou je garder une structure Server, et non Handler).
- type Server struct {
- http.Server
- // des fields en plus
- cfg Config
- db DB
- }
- // Je n'aime pas trop cette fonction NewServer, car potentiellement il y a beaucoup de choses à mettre dans le
- // serveur, et ca plus trop propre. Mais du coup, je ne sais pas ou déplacer le set du Handler.
- // J'aimerais pouvoir construire mon Server directement (mettre les fields en exportable).
- func NewServer(addr string, cfg Config, db DB, tls *tls.Config) *Server {
- s := &Server{
- Server: http.Server{
- Addr: addr,
- TLSConfig: tls,
- },
- cfg: cfg,
- db: db,
- }
- s.Server.Handler = s.Handler()
- return s
- }
- func (s *Server) Handler() http.Handler {
- router := mux.NewRouter().StrictSlash(true)
- router.HandleFunc("/", s.HandleIndex).Methods("GET")
- return router
- }
- // Si j'ai supprimé la fonction NewServer, peut etre mettre le Handler ici pour que ce soit automatique.
- // Mais du coup ca veut dire qu'on peut aussi lancer le serveur sans que le Handler soit set (si on appelle les fonctions du http.Server contenu dans le Server).
- func (s *Server) ServeTLS(certFile, keyFile string) error {
- log.Info("server starting", log.Fields{"server": "fileserver", "host": s.Server.Addr})
- err := s.ListenAndServeTLS(certFile, keyFile)
- return err
- }
- func (s *ServerEnroll) HandleIndex(w http.ResponseWriter, req *http.Request) {
- w.WriteHeader(http.StatusOK)
- json.NewEncoder(w).Encode("Connected")
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement