Как отправить данные на сервер в объекте formart, используя почту - PullRequest
0 голосов
/ 09 июля 2019

может кто-нибудь, пожалуйста, помогите мне, я пытаюсь опубликовать данные пользователя для пользователя в объектном формате, но они не отправляются в правильном формате, который я хочу. , вот как я хочу это отправить

{"birthdate":"1998","email":"jo@joe.com","firstname":"jo","lastname":"david","phone":"012345678","sex":"male","identifier":"32323232","username":"joe","password":"Kdsdsdsddew32","country":"sa","affiliate":"3232"}

но это происходит так {"user":{"birthdate":"1998","email":"jo@joe.com","firstname":"jo","lastname":"david","phone":"012345678","sex":"male","identifier":"32323232","username":"joe","password":"Kdsdsdsddew32","country":"sa","affiliate":"3232"}}

ЗДЕСЬ МОЙ КОД

 constructor(private http: Http, private htp: HttpClient) {

let user = {
  birthdate: '',
  email: 'jo@joe.com',
  firstname: 'jo',
  lastname: 'david',
  phone: '012345678',
  sex: 'male',
  identifier: '43425',
  username: 'joe',
  password: 'Kdsdsdsddew32',
  country: 'sa',
  affiliate: '3232'
};


const headers = new HttpHeaders({'Content-Type':'application/json; charset=utf-8'});

const params = new FormData();
// params.append('token', authResult.idToken);
params.append('', JSON.stringify(user));

this.htp.post(' http://192.168.66:323/test',  {user}, {headers}).
subscribe(data => {
  this.data = JSON.stringify(data);
});

}

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Angular обрабатывает преобразования JSON автоматически.Просто передайте переменную объекта методу POST, и если сервер правильно отправит обратно данные JSON с правильными заголовками, Angular автоматически проанализирует ответ и возвратит объект javascript (как если бы вы уже сделали JSON.parse)

sendData(data) {
  const httpOptions = {
    headers: new HttpHeaders({
      'Content-Type':  'application/json'
    })
  };

  return this.http.post("https://example.com/api", data, httpOptions);
}

А потом где-то еще ...

const user = {
  name: "John"
}
dataService.sendData(user)
  .subscribe(response => {
    ...
  });

Причина, по которой вы получаете user: {...} инкапсуляцию, заключается в следующей строке:

this.htp.post(' http://192.168.66:323/test', {user}, {headers}).

Вы создаете новый объект и назначаете ключ user в этом новом объекте как переменную user, которую вы определили с помощью let user = {.

Это сокращение Javascriptи то же самое, что и this.http.post("...", { user: user }, { headers: headers }).Вам не нужно создавать новые объекты, просто передайте исходный объект.

0 голосов
/ 09 июля 2019

Вы можете просто добавить

this.htp.post(' http://192.168.66:323/test', user, {headers})

без скобок.Это уже объект

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...