Skip to content

Instantly share code, notes, and snippets.

@spy16
Created July 27, 2022 18:00
Show Gist options
  • Save spy16/da89f1c50331b91d139d17b047c7aca8 to your computer and use it in GitHub Desktop.
Save spy16/da89f1c50331b91d139d17b047c7aca8 to your computer and use it in GitHub Desktop.
gpt3
package main
import (
"encoding/json"
"log"
"net/http"
"github.com/gorilla/mux"
)
type User struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
}
var users []User
func GetUser(w http.ResponseWriter, req *http.Request) {
params := mux.Vars(req)
for _, item := range users {
if item.ID == params["id"] {
json.NewEncoder(w).Encode(item)
return
}
}
json.NewEncoder(w).Encode(&User{})
}
func GetUsers(w http.ResponseWriter, req *http.Request) {
json.NewEncoder(w).Encode(users)
}
func CreateUser(w http.ResponseWriter, req *http.Request) {
params := mux.Vars(req)
var user User
_ = json.NewDecoder(req.Body).Decode(&user)
user.ID = params["id"]
users = append(users, user)
json.NewEncoder(w).Encode(users)
}
func DeleteUser(w http.ResponseWriter, req *http.Request) {
params := mux.Vars(req)
for index, item := range users {
if item.ID == params["id"] {
users = append(users[:index], users[index+1:]...)
break
}
json.NewEncoder(w).Encode(users)
}
}
func main() {
router := mux.NewRouter()
users = append(users, User{ID: "1", Name: "John Doe"})
users = append(users, User{ID: "2", Name: "Jane Doe"})
router.HandleFunc("/users", GetUsers).Methods("GET")
router.HandleFunc("/users/{id}", GetUser).Methods("GET")
router.HandleFunc("/users/{id}", CreateUser).Methods("POST")
router.HandleFunc("/users/{id}", DeleteUser).Methods("DELETE")
log.Fatal(http.ListenAndServe(":8000", router))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment