Я изучаю основы Angular и в настоящее время работаю над созданием REST-сервиса с использованием HttpClient из @ angular / common / http.
Во многих руководствах первым шагом является вызов http.get ().Обычно сначала весь список после вызова http.get () фокусируется на извлечении только одного элемента.В моем примере у меня есть userList (с пользователями).Я сделал два метода: getUserById () и getUserByName ().$ {this.userUrl} относится к расположению базы данных (с использованием файла JSON). Ниже они отображаются:
constructor(private http: HttpClient) {
}
getUserById(id: number): Observable<IUser> {
return this.http.get<IUser>(`${this.userUrl}/${id}`);
}
getUserByName(name: string): Observable<IUser> {
return this.http.get<IUser>(`${this.userUrl}/?name=${name}`);
}
Изначально я пытался заставить метод getUserByName () работать так же, как getUserById().Таким образом, используя:
getUserByName(name: string): Observable<IUser> {
return this.http.get<IUser>(`${this.userUrl}/${name}`);
}
Это не сработало, и я получил сообщение об ошибке 404 файл не найден.Это файл json, с которым я работал (я настроил сервер json, чтобы я мог также выполнять методы http.delete () и т. Д.):
{"users": [
{
"id": 1,
"name": "James",
"lastName": "Jameson",
"dateOfBirth": "10-10-2000",
"occupation": "Student"
},
{
"id": 3,
"name": "Steven",
"lastName": "Stevenson",
"dateOfBirth": "10-10-1990",
"occupation": "Police officer"
}]}
Может кто-нибудь объяснить мне, почему getUserByIdметоды работают, используя только '/ $ {id}' в вызове url, и почему getUserByName должен использовать '? / name = $ {name}'?