Как заставить $resource отослать данные в plain text?

Есть ресурс
this.Subscription = $resource(apiHost + 'subscription', {}, {});
Есть метод, которые его вызывает
this.API.Subscription.post({email:email}).$promise

В результате на сервер уходит такой запрос
curl 'https://api.site.com/api/subscription' -H 'Accept-Encoding: gzip, deflate, br' -H 'Content-Type: application/json;charset=UTF-8' -H 'Accept: application/json, text/plain, */*' -H 'Connection: keep-alive' --data-binary '{"email":"somemane@domain.com"}' --compressed

Сервер ждет запрос вот такого вида
curl -X POST --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/json" -d "email=kotulskiy%40mlsdev.com" "https://api.site.com//api/subscription"


Каким образом заставить $resourceпередавать данные не --data-binary а -d ?
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
this.Subscription = $resource(apiHost + 'subscription', {}, {
           create: {
                method: 'POST',
                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
                transformRequest(data) {
                    var str = [];
                    for (var d in data)
                    str.push(`${encodeURIComponent(d)}=${encodeURIComponent(data[d])}`);
                    return str.join("&");
                }
            },
});

this.API.Subscription.create({email:email}).$promise


Но по-хорошему это надо делать на уровне приложения, потому что у вас, судя по всему, весь API на Content-Type: application/x-www-form-urlencoded
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы