лучший способ для угловых издеваться над данными ответа сервера? - PullRequest
0 голосов
/ 16 января 2019

В настоящее время я работаю над библиотекой компонентов , которая будет зависеть от разных серверов.

Я создаю демонстрационное приложение для использования библиотеки компонентов, поэтому все запросы можно легко перехватить с помощью interceptors, чтобы смоделировать ответ сервера, как это демо , которое я создал.

Ограничения

  • сами компоненты будут обрабатывать запрос (компоненты будут просто передавать критические аргументы);
  • В библиотеку компонентов не допускаются изменения;

Reality

  • серверы иногда могут быть недоступны;
  • создание демонстрационного приложения для представления того, как использовать компоненты, фактически не требует реального взаимодействия с серверами большую часть времени;

Но, тем не менее, мне любопытно: есть ли другие способы обработки таких случаев?

В большинстве случаев я слышал, что перехватчики изменяли запрос / ответ (или иногда кэшировали) вместо насмешки .

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Вы можете установить json-server, а затем просто использовать ложные данные из него.

npm install -g json-server

Создать файл db.json с некоторыми данными

{
  "posts": [
    { "id": 1, "title": "json-server", "author": "typicode" }
  ],
  "comments": [
    { "id": 1, "body": "some comment", "postId": 1 }
  ],
  "profile": { "name": "typicode" }
}

Запустить JSON-сервер

json-server --watch db.json

Теперь, если вы перейдете на http://localhost:3000/posts/1,, вы получите

{ "id": 1, "title": "json-server", "author": "typicode" }

См .: https://github.com/typicode/json-server

0 голосов
/ 16 января 2019

В этом случае вы можете использовать данные JSON. Вы можете сохранить свои данные JSON в файле, перехватить ваш запрос в Interceptors и отправить имитирующие данные из файла, как показано ниже.

@Injectable()
export class SampleInterceptor implements HttpInterceptor {
  constructor(private http: HttpClient) {}
  intercept(
    request: HttpRequest<any>,
    next: HttpHandler
  ): Observable<HttpEvent<any>> {
    const httpRequest = new HttpRequest(
      <any>request.method,
      "./../../assets/sample.json"
    );
    request = Object.assign(request, httpRequest);
    request = request.clone();
    return next.handle(request);
  }
}
...