我在客户端使用angularJS $资源,想要创建一个自定义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服务器看起来像这样
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 {
}
}
答案 0 :(得分:0)
我不知道如何使用angularJS $资源,我是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
}
希望这有帮助!