Как обработать запрос с бека если приходит просто строка а не JSON?

Если приходит просто строка вместо JSON, это означает, что сервер отправляет данные с некорректным типом контента. В Angular есть несколько способов обработки таких запросов.

1. Использование специального HTTP-интерсептора (HTTP interceptor). HTTP-интерсептор позволяет перехватывать и обрабатывать все HTTP-запросы и ответы. В случае, когда приходит строка вместо JSON, можно использовать интерсептор для перехвата ответа, проверки его типа и преобразования строки в JSON. Для этого необходимо создать класс, реализующий интерфейс HttpInterceptor, и зарегистрировать его в провайдерах приложения.

import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable()
export class StringToJsonInterceptor implements HttpInterceptor {
  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(req).pipe(
      map((event: HttpEvent<any>) => {
        if (event instanceof HttpResponse && typeof event.body === 'string') {
          const bodyAsJson = JSON.parse(event.body);
          return event.clone({ body: bodyAsJson });
        }
        return event;
      })
    );
  }
}

2. Обработка ответа вручную. Если использование интерсептора не подходит или не требуется, можно обрабатывать ответ вручную в каждом отдельном запросе. В этом случае, после получения ответа с помощью HTTP-методов Angular (например, HttpClient), можно проверить тип ответа и преобразовать его в JSON при необходимости.

import { HttpClient } from '@angular/common/http';

constructor(private http: HttpClient) {}

getData(): Observable<any> {
  return this.http.get('https://example.com/api/data').pipe(
    map((response: any) => {
      if (typeof response === 'string') {
        return JSON.parse(response);
      }
      return response;
    })
  );
}

3. Настройка сервера для правильной обработки данных. Если у вас есть доступ к серверу, на котором расположен бекенд, можно настроить его таким образом, чтобы он отправлял данные в требуемом формате (например, JSON). Если сервер возвращает только текстовые данные, то вы можете обратиться к администратору или разработчикам серверной части и попросить их исправить эту проблему.

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