как вернуть образец данных json в ответ из класса обслуживания angular

#angular

#angular

Вопрос:

Как вернуть образец данных json в ответ вместо вызова фактического API. Я хочу протестировать свой код пользовательского интерфейса, фактически не вызывая внутренний API.У меня есть данные ответа, полученные из UAT, я добавил это в свой сервис и поместил файл json в ту же папку.

      getdata(): Observable<any>{
return this.http.get<any>('keyinfoResponse.json')
.pipe(map((data)=>data),catchError((error)=>throwError(error)));
  

}

и в компоненте

 this.dataService.getdata().subscribe((response) => {
     
      this.keyInfoResponse = response;
    }, (error) => {
      this.hasErrorOccurred = true;      
      if (error.message) {
        this.errorMessage = error.message;
      }       
    });
  }
  

ответ не определен.

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

1. в чем проблема?

2. поместите json в папку «активы» и измените свой URL-адрес в службе на «assets / keyinfoResponse.json»

Ответ №1:

Для доступа к локальному.файл json с использованием HttpClient, местоположение файла должно быть включено в assets свойство angular.json file . По умолчанию (в большинстве случаев) src/assets папка уже будет включена.

angular.json

 {
  ...
  "projects": {
    "site": {
      ...
      "architect": {
        "build": {
          ...
          "options": {
            ...
            "assets": [
              "src/assets"
            ],
  

Так что либо нужно разместить .файлы json в src/assets папке или, если нет, добавьте их путь к исходной папке assets в свойство.

Структура папок

 src
├── app
├── assets
│   ├── keyinfoResponse.json
├── angular.json
├── index.html
...
  

Затем вы можете получить к ним доступ с помощью HttpClient следующим образом

 getdata(): Observable<any> {
  return this.http.get<any>('assets/keyinfoResponse.json').pipe(
    map((data) => data),
    catchError((error) => throwError(error))
  );
}