Каков правильный способ публикации параметров массива в ANGULAR?

#angular #post

#angular #Публикация

Вопрос:

Я пытаюсь POST создать поле массива в своем приложении Angular, и мне трудно найти правильный способ форматирования данных.

При использовании a CURL я могу успешно POST передавать данные с --data атрибутом:

 'fields[Name]=Testamp;fields[Email]=test@test.comamp;fields[Message]=POST Message!'
  

Я попытался настроить параметры своих данных следующим образом:

 let fields = {
   'fields': {
      'Name': this.contact.name,
      'Email': this.contact.email,
      'Message': this.contact.message
    }
};
  

Но, похоже, это неправильно настраивает данные для публикации в моем API.

Как правильно я должен настраивать данные, чтобы они соответствовали ожидаемым параметрам:

 fields[Name]
fields[Email]
fields[Message]
  

Спасибо за любое / все направления.

Комментарии:

1. Если вы console.log() req.body в серверной части, какой у него формат? Я бы подумал, что ваш массив данных от уровня к уровню, вы просто хотите, чтобы let fields = {name, email, message} вместо того, чтобы оборачивать его в дополнительный fields .

2. Я действительно заметил, что моя проблема, возможно, тоже связана с типом содержимого. Я изменил его на "Accept":"application/json" , а затем установил new FormData() , и, похоже, он работает намного лучше.

Ответ №1:

Вместо настройки параметров в объекте я настраиваю их в FormData, и, похоже, все работает так, как ожидалось.

 const formData = new FormData();

formData.append('fields[Name]',this.contact.name);
formData.append('fields[Email]',this.contact.email);
formData.append('fields[Message]',this.contact.message);
  

Ответ №2:

 Sorry I couldn't catch your issue. If you are Post request and using httpClient 
Then there is a scope that you can directly pass object. It seems your field value is a object So you can directly pass as body in post request

 this.httpClient.post(url, **fields**, htpHeader).subscribe(...

I can see @zeropsi also gave an answer. So you can directly pass such formData also.