Thanks so much. I really appreciate your effort, but one more thing. I was trying to send some JSON data using AngularJS Request, but cannot grab the JSON from the r.body in go, but if i send my JSON via CURL, I would be able to grab it, I've been fighting against this issue non-stop, haven't figure out what could be the problem. I'm i not doing right? Looking forward to hearing from you. Thanks in advance.
package main
import (
"fmt"
"net/http"
"encoding/json"
"log"
)
type UserInfo struct{
FirstName string "json:FirstName"
LastName string "json:LastName"
MiddleName string "json:MiddleName"
}
type AllUsers struct{
Users []UserInfo
}
type Error struct{
Message string
}
type Route struct{
Name string
Method string
Pattern string
HandlerFunc http.HandlerFunc
}
type Routes []Route
var routes = Routes{
Route{
"Index",
"GET",
"/",
Index,
},
Route{
"User",
"POST",
"/api/user",
User,
},
}
func Index(w http.ResponseWriter, r *http.Request){
}
func User(w http.ResponseWriter, r *http.Request){
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
w.Header().Set("Access-Control-Allow-Origin", "*")
decoder := json.NewDecoder(r.Body)
var user_info UserInfo
err := decoder.Decode(&user_info)
if(err != nil){
panic(w, r)
log.Println(err)
return
}
fmt.Println(user_info.FirstName)
w.Write([]byte("Hello"));
}
func panic(w http.ResponseWriter, r * http.Request){
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
w.Header().Set("Access-Control-Allow-Origin", "*")
ErrorSlice := Error {
Message : "Invalid JSON Request",
}
output,_ := json.Marshal(ErrorSlice)
//log.Println(string(output))
w.Write([]byte(output))
}
func APIDescribe(w http.ResponseWriter, r *http.Request){
w.Header().Set("Content-Type", "application/json")
w.Header().Set("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Authorization")
w.Header().Set("Access-Control-Allow-Origin", "*")
}
func main(){
routes := mux.NewRouter()
routes.HandleFunc("/api/user", User).Methods("GET", "OPTIONS")
http.Handle("/", routes)
http.ListenAndServe(":8080", nil)
}