В настоящее время я разрабатываю свое первое JS-приложение Angular (Version 6) с Spring Boot Backend.
Я уже получил работу, чтобы иметь обзор пользователя, детализацию и страницу редактирования.
Я могу отредактировать существующую запись пользователя, но не могу сохранить нового пользователя.
Я получил userService, который управляет всеми взаимодействиями с Backend:
const httpOptions = {
headers: new HttpHeaders({'Content-Type': 'application/json'})
};
@Injectable({
providedIn: 'root'
})
export class UserService {
private apiUrl = 'http://localhost:8080/users';
constructor(private http: HttpClient,
private messageService: MessageService) {
}
getUsers(): Observable<User[]> {
return this.http.get<User[]>(this.apiUrl)
.pipe(
tap(user => this.log('fetched users')),
catchError(this.handleError('getUsers', []))
);
}
getUser(id: number): Observable<User> {
const url = `${this.apiUrl}/${id}`;
return this.http.get<User>(url).pipe(
tap(_ => this.log(`fetched user id=${id}`)),
catchError(this.handleError<User>(`getUser id=${id}`))
);
}
updateUser(user: User): Observable<any> {
const url = `${this.apiUrl}/${user.id}`;
return this.http.put(url, user, httpOptions).pipe(
tap(_ => this.log(`updated user id=${user.id}`)),
catchError(this.handleError<any>('updateUser'))
);
}
deleteUser(user: User): Observable<any> {
const url = `${this.apiUrl}/${user.id}`;
return this.http.delete(url, httpOptions).pipe(
tap(_ => this.log(`delete user id=${user.id}`)),
catchError(this.handleError<any>('deleteUser'))
);
}
saveUser(user: User): Observable<any> {
const url = `${this.apiUrl}/create`;
this.log("user create with " + user.username +" and "+user.email);
return this.http.put(url, user, httpOptions).pipe(
tap(_ => this.log(`save user`)),
catchError(this.handleError<any>('updateUser'))
);
}
/**
* Handle Http operation that failed.
* Let the app continue.
* @param operation - name of the operation that failed
* @param result - optional value to return as the observable result
*/
private handleError<T>(operation = 'operation', result?: T) {
return (error: any): Observable<T> => {
console.error(error); // log to console instead
this.log(`${operation} failed: ${error.message}`);
// Let the app keep running by returning an empty result.
return of(result as T);
};
}
/** Log a HeroService message with the MessageService */
private log(message: string) {
this.messageService.add(`UserService: ${message}`);
}
}
Если я нажму на «Сохранить», то увижу вывод журнала, который я «создаю пользователем с помощью foo и foo@baar.com», но больше ничего не вижу.
Нет запроса на отправку на сервер, но также не было сообщений об ошибках.
С уважением,
Yannic