从 angularJS 发送 JSON 数据,以便 Go 服务器可以解析为 struct

我在我的客户端中使用 angularJS $resource 并想创建一个自定义 PATCH 函数,我将数据发送到我的 GO 服务器。我想将我的 GO 服务器上的数据解析为一个结构。我尝试像下面的代码一样发送数据,但 GO 服务器将值输出为“[object Object]”,并在我尝试编组时生成错误。数据应该作为 PATCH 的查询字符串包含,还是可以/应该包含在请求正文中?


var UpdateOneSchedule = $resource('/schedules/me/:bkchangeobject', {bkchangeobject:{}},{

    update:{

        method: 'PATCH',

        isArray: false,

    }

});

我的 PATCH 请求中的代码片段


            var updateObject = {"title":"value", "description":"value"}

            console.log(updateObject)



            UpdateOneSchedule.update({bkchangeobject:updateObject},

            function(data){

                //on success

            },

            function(httpResponse){

                //on error

                if(httpResponse.status === 409){ //StatusConflict

                    //

                    revertFunc()

                }

            });

go server 长这样


func (db *bkDatabase) updateSchedule(w http.ResponseWriter, r *http.Request) {

    bkDB := bkDatabase{db.session.Copy()}

    defer bkDB.closeDB()


    //check tokens

    if bkSystem.db.isAuthorized(w, r) {

        param := mux.Vars(r)["bkchangeobject"]

        fmt.Println(param)

        var change_object event


        err := json.Unmarshal([]byte(param), &change_object)

        if err != nil {

            log.Fatalf("JSON Unmarshal error: %v", err)

        }

        fmt.Println(change_object)



    } else {


    }

}


阿晨1998
浏览 166回答 1
1回答

qq_笑_17

我不知道如何使用 angularJS $resource,我是 angularJS 新手。但我已经实现了类似的东西,使用以下代码:在我的控制器中,我声明了将发送到服务器端的对象:$scope.message = {  From: {    Email: '',    Name: ''  },  Subject: '',  Content: ''}该对象链接到范围,因此可以由用户填写。我还创建了一个将对象发送到服务器端的服务:.service('ContactService', function ($http) {this.url = 'http://url.toyourwebservice.golang/what/you/want';this.send = function (contact) {  return $http.post(this.url, contact);};});这样,在服务器端,我可以检索请求正文中的对象:b, err := ioutil.ReadAll(r.Body)    if err != nil {        return err    }if len(b) != 0 {    err = json.Unmarshal(b, contact)    if err != nil {        return err    }    // Do whatever you want with contact}希望这有帮助!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go