Как фронтенд-разработчик, мы часто взаимодействуем с серверной частью. Однако в процессе стыковки мы всегда сталкиваемся с междоменными проблемами, так как же нам их решить?
В этой статье angualr
используется для объяснения темы стыковки api
агента. [Рекомендуемые соответствующие руководства: «Учебное пособие по Angular»]
Во-первых, давайте разберемся, что такое междоменный подход.
Простое пониманиемеждоменного подхода
: когда url
任意一个
трех частей协议、域名(ip地址)、端口
запроса и текущая страница различаются, это междоменный домен .
Возьмем в качестве примера мой сайт https://jimmyarea.com
:
запрошенный адрес | является | междоменным? |
---|---|---|
У | jimmyarea.com | другой протокол |
. | У | jimmyarea.cn |
другой | адрес | . |
адрес и номер порта | .
Прокси
.На данный момент мы можем использовать прокси для локальной совместной отладки адресов api
различных сред.
Сначала мы создаем новый файл proxy.conf.json
в корневом каталоге проекта.
В качестве примера возьмем запрос интерфейса https://jimmyarea.com/api/public/article?page=-1
:
{ "/апи": { "target": "https://jimmyarea.com/", «changeOrigin»: правда, «безопасный»: ложь, "pathRewrite": { "^/апи": "/апи" } } }
target
— адрес агента, pathRewrite
— перезапись префикса агента.
После завершения создания прокси-файла вам необходимо включить прокси. Добавляем в package.json
еще одну командную строку, указывающую, что она используется для отладки в среде разработки.
"скрипт": { "dev": "ng submit --proxy-config=proxy.conf.json", }
Выполните npm run dev
чтобы запустить проект и запустить агент. Каждый раз при изменении прокси-файла вам необходимо перезапускать командную строку,
чтобы убедиться, что
мы создали новый сервис article
. Содержимое article.service.ts
следующее:
import { Injectable } from '@angular/core'. ; // импорт http-клиента { HttpClient } из '@angular/common/http' @Инъекционный({ предоставлено: 'корень' }) класс экспорта ArticleService { конструктор( частный http: HttpClient ) { } // Получаем список статей getArticleList() { верните this.http.get('/api/public/article', { //Тип возвращаемого значения responseType: 'json', //Параметры запроса: { страница: -1 } }) } }
Для приведенного выше запроса адрес на странице — http://localhost:4200/api/public/article?page=-1
. На самом деле адрес доступа — https://jimmyarea.com/api/public/article?page=-1
. Мы можем проверить это, вызвав его в user-list.component.ts
:
ngOnInit():void { this.articleService.getArticleList().subscribe({ следующий: (данные: любые) => { console.log(данные) }, ошибка: () => {} }) // ... }
После запуска программы вы увидите в консоли следующие сетевые запросы:
Хорошая работа, братан. Мы можем идеально проксировать адрес, указанный серверной частью, и отладить его, а прокси может проксировать более одного адреса. Читатели могут написать несколько прокси-адресов для проверки~
[Конец]