package main import ( "github.com/ant0ine/go-json-rest/rest" "log" "net/http" ) func main() { api := rest.NewApi() api.Use(rest.DefaultDevStack...) api.Use(&rest.CorsMiddleware{ RejectNonCorsRequests: false, OriginValidator: func(origin string, request *rest.Request) bool { return origin == "http://my.other.host" }, AllowedMethods: []string{"GET", "POST", "PUT"}, AllowedHeaders: []string{ "Accept", "Content-Type", "X-Custom-Header", "Origin"}, AccessControlAllowCredentials: true, AccessControlMaxAge: 3600, }) router, err := rest.MakeRouter( rest.Get("/countries", GetAllCountries), ) if err != nil { log.Fatal(err) } api.SetApp(router) log.Fatal(http.ListenAndServe(":8080", api.MakeHandler())) } type Country struct { Code string Name string } func GetAllCountries(w rest.ResponseWriter, r *rest.Request) { w.WriteJson( []Country{ Country{ Code: "FR", Name: "France", }, Country{ Code: "US", Name: "United States", }, }, ) }