-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.go
More file actions
55 lines (44 loc) · 1.94 KB
/
Copy pathmain.go
File metadata and controls
55 lines (44 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package main
import (
"log"
"net/http"
"os"
"student-management-system/handlers"
"github.com/gorilla/mux"
)
func main() {
lg := log.New(os.Stdout, "student-management-system ", log.LstdFlags)
studentHandler := handlers.NewStudent(lg)
router := mux.NewRouter()
// GET Subrouter
getRouter := router.Methods(http.MethodGet).Subrouter()
getRouter.HandleFunc("/student/all", studentHandler.GetStudents)
getRouter.HandleFunc("/student/{id}", studentHandler.GetStudentByID)
getRouter.HandleFunc("/student/summary/{id}", studentHandler.GetStudentSummary)
// POST Subrouter with middleware
postRouter := router.Methods(http.MethodPost).Subrouter()
postRouter.Use(studentHandler.MiddlewareValidateStudent)
postRouter.HandleFunc("/student/add", studentHandler.CreateStudent)
// PUT Subrouter with middleware
putRouter := router.Methods(http.MethodPut).Subrouter()
putRouter.Use(studentHandler.MiddlewareValidateStudent)
putRouter.HandleFunc("/student/update/{id}", studentHandler.UpdateStudent)
// DELETE Subrouter
deleteRouter := router.Methods(http.MethodDelete).Subrouter()
deleteRouter.HandleFunc("/student/delete/{id}", studentHandler.DeleteStudent)
// // OR :
// router.HandleFunc("/student/all", studentHandler.GetStudents).Methods(http.MethodGet)
// router.HandleFunc("/student/{id}", studentHandler.GetStudentByID).Methods(http.MethodGet)
// router.HandleFunc("/student/add", studentHandler.CreateStudent).Methods(http.MethodPost)
// router.HandleFunc("/student/update/{id}", studentHandler.UpdateStudent).Methods(http.MethodPut)
// router.HandleFunc("/student/delete/{id}", studentHandler.DeleteStudent).Methods(http.MethodDelete)
// router.HandleFunc("/student/summary/{id}", studentHandler.GetStudentSummary).Methods(http.MethodGet)
server := &http.Server{
Addr: ":8000",
Handler: router,
}
log.Printf("Server starting on port 8000\n")
if err := server.ListenAndServe(); err != nil {
log.Fatalf("Server failed to start: %v", err)
}
}