我在使用Golang时相当新,我在尝试发回JSON响应时遇到了一个问题。
我的main.go代码看起来像这样:
import (
"github.com/gorilla/mux"
"github.com/justinas/alice"
)
mx.Handle("/verify", commonHandlers.ThenFunc(controller.VerifyHandler)).Methods("GET").Name("verify") // Used to display verify.html
mx.Handle("/verify", commonHandlers.ThenFunc(verifyUser)).Methods("GET") // I'm actually not certain if I can call 2 different function handlers on the same URL
我的verifyHandler调用RenderTemplates,它看起来像这样:
func RenderTemplates(w http.ResponseWriter, r *http.Request, name string) {
f, err := os.Open("./templates/" + name)
check(err)
defer f.Close()
buf, err := ioutil.ReadAll(f)
check(err)
fmt.Fprintf(w, string(buf))
}
RenderTemplates用于显示我的verify.html页面
然后我有verifyUser函数处理程序,它发回一个JSON格式的响应,看起来像这样:
response := generateResponse("Message goes here", false)
res, err := json.Marshal(response)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(res)
然后我让我的AngularJS控制器发出请求:
app.controller("verifyControl", ['$scope', '$http', function($scope, $http) {
$scope.message = "";
$http({
method: 'GET',
url: "/verify"
}).success(function(data) {
$scope.message = data.msg;
console.log(data);
});
}]);
问题是我从AngularJS调用回来的响应不是JSON,而是我认为来自verifyHandler的verify.html HTML页面。有没有我可以获得JSON响应的解决方案?