2015-11-04 65 views
3

如何將go lang中的後端服務器連接到angularjs?我知道angularjs通過$http$resource服務進行通信,但是一旦所有的數據結構被創建,哪些部分的代碼鏈接會與角度進行通信?這是編碼/ marshalled JSON或我們是否創建某種路線...Golang連接到angularjs

我是一個新手,希望在學習棱角後開始這個項目,但這是我不明白的部分 - 什麼是服務鏈接與終點從那個角度來看:$resource$http

+0

這可能是有益的http://thenewstack.io/make-a-restful-json-api-go/ – m0meni

+0

你可能會更好,詢問這樣一個相當「廣義」的問題上對HTTPS ://forum.golangbridge.org/ - 簡短的答案是使用Go的'net/http'包裝,路由服務於JSON。 – elithrar

回答

0

創建一個讀取json字符串的http端點,解組它,用它做一些邏輯並寫一個json字符串給響應。例如:

func main() { 

http.HandleFunc("/api/", apiHandler) 

    logInfo(fmt.Sprintf("Starting server on port %d", serverPort)) 
    err := http.ListenAndServe(fmt.Sprintf(":%d", serverPort), nil) 
    if err != nil { 
     logError(err) 
    } 
} 


func apiHandler(w http.ResponseWriter, r *http.Request) { 

    //ensure its a post 
    method := r.Method 

    if method != "POST" { 
     fail(w, "Invalid http method") 
     return 
    } 

    requestData, err := ioutil.ReadAll(r.Body) 

    if err != nil { 
     fail(w, err.Error()) 
     return 
    } 


    respData, err := doBusinessLogicWithData(requestData) 

    if err != nil { 
     fail(w, err.Error()) 
     return 
    } 

    respJSONBytes, err := json.Marshal(respData) 
    if err != nil { 
     fail(w, err.Error()) 
     return 
    } 
    fmt.Fprintln(w, string(respJSONBytes)) 

} 

func fail(w http.ResponseWriter, message string) { 

    result := &struct { 
     Success bool 
     Message string 
    }{ 
     Success: false, 
     Message: message, 
    } 

    resultJSONBytes, err := json.Marshal(result) 
    if err != nil { 
     logError(err) 
     fmt.Fprintln(w, "Unable to generate result") 
     return 
    } 
    fmt.Fprintln(w, string(resultJSONBytes)) 
}