#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, должен ли я что-то делать для преобразования или что?