Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "net/http"
- "github.com/jkrovnl/rkods/controllers"
- "github.com/julienschmidt/httprouter"
- )
- func main() {
- r := httprouter.New()
- uc := controllers.NewUserController()
- r.GET("/user/:id", uc.GetUser)
- r.POST("/user", uc.CreateUser)
- r.DELETE("/user/:id", uc.DeleteUser)
- http.ListenAndServe("localhost:8080", r)
- }
- ===========================================
- package models
- // capital U because its gonna be exported
- type User struct {
- Name string `json:"name"`
- Gender string `json:"gender"`
- Age int `json:"age"`
- Id string `json:"id"`
- }
- =============================================
- package controllers
- import (
- "encoding/json"
- "fmt"
- "net/http"
- "github.com/jkrovnl/rkods/models"
- "github.com/julienschmidt/httprouter"
- )
- type UserController struct{}
- func NewUserController() *UserController {
- return &UserController{}
- }
- //Methods have to be capitalized to be exported, eg, GetUser and not getUser
- func (uc UserController) GetUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
- u := models.User{
- Name: "James Bond",
- Gender: "male",
- Age: 32,
- Id: p.ByName("id"),
- }
- uj, err := json.Marshal(u)
- if err != nil {
- fmt.Println(err)
- }
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusOK) // 200
- fmt.Fprintf(w, "%s\n", uj)
- }
- func (uc UserController) CreateUser(w http.ResponseWriter, r *http.Request, _ httprouter.Params) {
- u := models.User{}
- json.NewDecoder(r.Body).Decode(&u)
- u.Id = "007"
- uj, err := json.Marshal(u)
- if err != nil {
- fmt.Println(err)
- }
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(http.StatusCreated) // 201
- fmt.Fprintf(w, "%s\n", uj)
- }
- func (uc UserController) DeleteUser(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
- //TODO: only write code to delete user
- w.WriteHeader(http.StatusOK) // 200
- fmt.Fprint(w, "Write code to delete user \n")
- }
- =====================================================
- Start your server
- Enter this at the terminal
- curl http://localhost:8080/user/1
- curl -X POST -H "Content-Type: application/json" -d '{"Name":"James Bond","Gender":"male","Age":32,"Id":"777"}' http://localhost:8080/user
- curl -X DELETE -H "Content-Type: application/json" http://localhost:8080/user/777
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement