Отправьте данные JSON из angularJS, чтобы сервер Go мог разобрать в struct

0

Я использую ресурс angularJS $ у своего клиента и хочу создать пользовательскую функцию PATCH, где я отправляю данные на мой сервер GO. Я хочу проанализировать данные на моем сервере GO в структуре. Я попытался отправить данные как код ниже, но сервер GO выводит значения как "Объект объекта" и генерирует ошибку, когда я пытаюсь ее маршалировать. Должны ли данные быть включены в строку запроса для 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 {

    }
}
Теги:
go

1 ответ

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
}

Надеюсь, это поможет!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню