2015-08-30 2 views
1

У меня есть случай, когда пользователь может выбрать определенные объекты с флажком для удаления. Когда пользователь выбирает конкретный объект, его id добавляется к определенному массиву. Например, если я бы выбрал первые, вторые и четвертые объекты их идентификаторы будут:Как удалить коллекцию с помощью angularjs с помощью REST api?

[0, 1, 3]

В фронтальной службе я использую следующий метод:

deleteEntities: function(batchIds){ 
    return $http.delete('/finance/entities', {params: [batchIds collection here??]}).success(function(data){ 
     return data; 
    }); 
} 

Я бы передать эти данные обратно -end. Который использует следующий метод:

@Component 
@Path("/entities") 
@Produces("application/json") 
public class FinanceEntityServiceImpl implements FinanceEntityService { 
    @DELETE 
    public void massDeleteEntitiesByIds(String batchIds){ 
     System.out.println("batch ids: " + batchIds); 
     List<Long> idList = GsonProcessing.deserializeIdsList(batchIds); 
     financeDao.massDelete(idList); 
    } 
} 

Когда я запускаю выше код

Я искал в сети тиши, а о том, как удалить коллекции ресурсов с angularjs $ HTTP, и я до сих пор не нашли.

Я также не уверен, могу ли я добавить новую коллекцию в $http.delete в качестве параметра, где он говорит [batchIds collection here ??].

Что я знаю об удалении коллекции, так это то, что url должен быть в форме '/myURL/batch?id=1&id=2&id=3' и исправить меня, если я ошибаюсь. Проблема здесь в том, что если я хочу удалить партию из 20 идентификаторов, нет смысла вкладывать все идентификаторы в один и тот же URL-адрес.

Итак, мой вопрос - лучший способ и как удалить ресурсы коллекции с помощью angularjs $ http.delete?

+0

Это любая помощь вам http://stackoverflow.com/questions/19957858/send-array-via-get-request-with-angularjs-http-service? Вам придется заменить get на delete. –

+0

Вы можете посмотреть мое сообщение, я думаю, это может вам помочь: http://stackoverflow.com/questions/35754028/angularjs-and-rest-perform-delete-action-sending-array-of-many-items-to -remove/35843348 # 35843348 –

ответ

0

Прежде всего, список идентификаторов Отправив это хороший способ, чтобы удалить с REST API

Во-вторых, вы не должны передавать идентификаторы в URL (по соображениям безопасности), лучший способ, чтобы отправить JSON внутри тела запроса, который содержит данные, которые вы хотите отправить (это также верно для PUT и POST)

В-третьих, если ваш код всегда отправляет json (может быть принудительно, создав службу, которая отправляет HTTP-запрос на ваш api таким же образом) ваш метод на бэкэнд должен получать json, а не строку, и разбор (deserlize) запроса не должен происходить в методе.

+0

Спасибо Орен. Я сделал то, что, когда я использую JSON как String, я буду десериализовать его в backend с помощью Gson. Я сделал специальный метод для десериализации. Я попытаюсь добавить json внутри тела запроса и соответственно добавить комментарии. –

+0

Если это https, то отправка идентификаторов в URL-адресе не является проблемой безопасности. REST использует глаголы (DELETE для удаления).Если данные должны были быть отправлены в тело, тогда удалить глагол нельзя. Тогда это не будет спокойным. Как вы решаете использовать глагол удаления и когда использовать post/put verb с идентификаторами в теле? –

0

Хорошо, ответ был намного проще, чем я думал. Все, что я должен был сделать, это изменить PARAMS с данными:

{params: [batchIds collection here??]} 

в этом

{data: batchIds} 

И теперь вы можете удалить пакет идентификаторов или все, что вы хотите при условии, что вы десериализации данных в интерфейсе.

Смежные вопросы