HTTP: Выполните запрос JSONP¶
03.11.2022
"JSON with Padding" (JSONP) — это метод обмана веб-браузера для выполнения запросов с тегом <script>
, который использует атрибут SRC для выполнения специального запроса API.
Приложения могут использовать HttpClient
для выполнения JSONP запросов через домены, когда сервер не поддерживает протокол CORS.
Запросы Angular JSONP возвращают Observable
. Следуйте шаблону подписки на наблюдаемые и используйте оператор RxJS map
для преобразования ответа перед использованием async pipe для управления результатами.
В Angular используйте JSONP, включив HttpClientJsonpModule
в импорт NgModule
. В следующем примере метод searchHeroes()
использует JSONP-запрос для поиска героев, имена которых содержат поисковый запрос.
1 2 3 4 5 6 7 8 9 |
|
Этот запрос передает heroesURL
в качестве первого параметра и имя функции обратного вызова в качестве второго параметра. Ответ заворачивается в функцию обратного вызова, которая принимает наблюдаемые данные, возвращенные методом JSONP, и передает их в обработчик ошибок.
Запрос не JSON-данных¶
Не все API возвращают данные в формате JSON. В следующем примере метод DownloaderService
считывает текстовый файл с сервера и регистрирует содержимое файла, а затем возвращает его вызывающей стороне в виде Observable<string>
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
HttpClient.get()
возвращает строку, а не JSON по умолчанию из-за опции responseType
.
Оператор RxJS tap
позволяет коду проверять значения успехов и ошибок, проходящие через наблюдаемую, не нарушая их.
Метод download()
в DownloaderComponent
инициирует запрос, подписываясь на метод сервиса.
1 2 3 4 |
|