#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.