Не удается отправить объект в rest API в angular 6

#java #angular #spring #typescript

#java #угловатый #весна #typescript

Вопрос:

Я использую Rest API и хочу сохранить пользовательские данные, я могу попасть в API, но не могу отправить объект. Он показывает null в API.

Я проверил свою консоль и сеть, в ней отображается URL-адрес приложения angular, а не URL-адрес API.

 export class UserService {
  url = 'http://localhost:8085/api/employees';
  constructor(private http: HttpClient) {}

  userData(user: User): Observable<any> {
    const params = new HttpParams().set('id', '5').
    set('userName', 'Bisnu').set('salary', '100').set('department', 'IT').set('password', 'mohan')
    .set('firstName', 'Bisnu').set('lastName', 'Biswal');
    const newUser = {
      userName: 'Bisnu',
      salary: 100,
      password: 'mohan',
      department: 'IT',
      firstName: 'Bisnu',
      lastName: 'Mohan'
    };

    console.log(newUser);
    console.log(this.url);
    return this.http.post<any>(this.url, newUser);
  }
}
 

и из компонента я вызываю эту службу

 onSubmit(){
    console.log(this.user);
    this.userService.userData(this.user).subscribe(
      data => console.log("success", data),
      error => console.error("Error!",error)
    );
    this.resetForm();
  }
}
 

Консоль браузера я проверил, как показано ниже, что неверно.

введите описание изображения здесь

контроллер выглядит следующим образом

введите описание изображения здесь

Пользовательская модель выглядит следующим образом

введите описание изображения здесь

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

1. можете ли вы нажать на вызов API?

2. да, Шахид, может попасть в API, но значения отображаются как null, не в состоянии определить, что не так. Я жестко запрограммировал значения, но все равно получил нулевые значения. Скриншот, который я привел, в этом URL-адресе запроса отображается неправильно, и метод также показывает «GET», но я сделал post.

3. Если вы можете обратиться к API с нулевым значением, то скриншот, который вы нам показали, должен быть другим запросом. Если ваш API поврежден, к нему должен быть сделан запрос. Может быть полезно показать код из вашего API, где появляется нулевое значение.

4. Это простой rest API

5. я столкнулся с такой проблемой. пожалуйста, проверьте свой тип данных с помощью серверной части. если вы отправляете значение с плавающей запятой или строковое значение со стороны angular, а тип данных на стороне api — int, то вы получите нулевое значение. пожалуйста, проверьте ваш тип данных в вашем коде, который я вижу, в одном месте это строка, а во втором месте вы отправляете значение как int

Ответ №1:

Попробуйте сделать это, серверный объект и ваш объект newuser не совпадают.

     userData(user: User): Observable<any> {
          user.Id :1;
          user.userName: 'Bisnu';
          user.salary: 100;
          user.password: 'mohan';
          user.department: 'IT';
          user.firstName: 'Bisnu';
          user.lastName: 'Mohan';

        return this.http.post<any>(this.url, user);
      }
 

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

1. Не могли бы вы объяснить этот ответ?

2. Это недопустимый javascript. Кроме того, ваше объяснение не имеет смысла, КАК внутренний объект и newuser объект не совпадают, если вы не видели внутренний объект, поскольку он еще не был опубликован OP? В дополнение к этому, даже если бы ваш код был действительным, он не имел бы никакой разницы с кодом, первоначально опубликованным OP, за исключением того факта, что ваш код взорвался бы, если user бы в качестве аргумента было передано значение null.

3. @UncleDave проверьте в UserModel, он не передает параметр «Id»

4. @BhargilJoshi теперь можно подключиться к API, userData(пользователь: Пользователь): Наблюдаемый<Пользователь> { пользователь. Id = 10; пользователь. Имя пользователя = ‘Bisnu’; пользователь. Зарплата = ‘100’; пользователь. Пароль = ‘mohan’; пользователь. Department = ‘ИТ’; пользователь. FirstName = ‘Bisnu’; пользователь. LastName = ‘Mohan’; console.log(пользователь); возвращает this.http.post<Пользователь>(this.url,пользователь);

5. я вижу значения в полезной нагрузке запроса, но в API эти значения отображаются как null, должен ли я что-то делать для преобразования или что?