package main import ( "encoding/json" "fmt" "io/ioutil" "net/http" "os" "spargcom/senuma/database" "spargcom/senuma/domain" log "github.com/sirupsen/logrus" "github.com/gorilla/mux" ) func main() { file, err := os.OpenFile("senuma.log", os.O_CREATE|os.O_APPEND, 0644) if err != nil { log.Fatal(err) } defer file.Close() log.SetOutput(file) log.SetLevel(log.InfoLevel) r := mux.NewRouter() r.HandleFunc("/artikel", createArtikelHandler).Methods("POST") //r.HandleFunc("/groups", createGroupHandler).Methods("POST") //r.HandleFunc("/users", createUserHandler).Methods("POST") //r.HandleFunc("/accounts", createAccountHandler).Methods("POST") //r.HandleFunc("/tunnels", createTunnelHandler).Methods("POST") http.ListenAndServe(":8081", r) log.Info("running on localhost, Port 8081") } func createArtikelHandler(writer http.ResponseWriter, req *http.Request) { body, err := ioutil.ReadAll(req.Body) if err != nil { writer.WriteHeader(http.StatusBadRequest) } var art domain.Artikel json.Unmarshal(body, &art) log.Println("Bezeichnung = ", art.Bezeichnung) log.Println("externe Art-Nr = ", art.ArtNrExt) res, err := database.CreateArtikel(art) if err != nil { writer.WriteHeader(http.StatusInternalServerError) } b, err := json.Marshal(res) if err != nil { log.Println("Error: ", err) } location := fmt.Sprintf("%s/%d", req.URL.String(), res.Id) writer.Header().Set("Location:", location) writer.Header().Set("Content-Type", "application/json") writer.WriteHeader(http.StatusCreated) writer.Write(b) }