Прямоугольный POST всегда пустой

Я думаю, что не понимаю, как POST выполняется в RESTful API. При создании нового объекта в Restangular следующим образом:

var user = {name: "John", id:"123"};
Restangular.one('building','5').post(user);

Я ожидаю, что он передаст массив $_POST со значениями пользователя на URL-адрес example.com/api/building/5.

И точно знаю, что он выполняет запрос POST к правильному сценарию, но массив $_POST пуст. Есть идеи, что я делаю неправильно?


person Carlos Bergen    schedule 25.06.2013    source источник


Ответы (1)


Я создатель Restangular. Посты должны быть сделаны для коллекций, а не для элементов. Итак, если вы хотите добавить пользователя в здание, вы должны сделать что-то вроде:

Restangular.one("building", 5).post('users', user).then(function(postedUser) {
    console.log("Success");
})

Проверьте метод публикации здесь: https://github.com/mgonto/restangular#element-methods

Подпись — это путь к коллекции подэлементов, элемент к POST.

Лучшее!

person mgonto    schedule 25.06.2013
comment
Хорошая работа над Restangular ;) - person deadlock; 26.11.2014
comment
@mgonto Что означает строка «пользователи» в вашем ответе? Спасибо. - person Leopoldo Sanczyk; 20.08.2015
comment
@LeopoldoSanczyk «пользователи» — это ключ для объекта коллекции пользователей. Что-то вроде этого {'пользователи': [{id: 1}, {id: 2}]} - person sudhir; 27.08.2015
comment
«users» — это последняя часть URL-адреса REST API. Он должен быть example.com/api/building/5/users в соответствии с правилами REST API. И вы пытались отправить его на сущность (здание с id = 5). - person WhiteAngel; 22.11.2015
comment
Итак... чтобы было ясно, это неправильно. Семантика POST зависит от сервера и может быть полностью уместной. Конечно, было бы неплохо, если бы вместо этого использовался PATCH (при условии, что содержимое имеет смысл патча), но это не имеет значения. - person Doug Moscrop; 10.03.2016