Прежде всего, спасибо авторам axios и wepy за предоставление таких замечательных библиотек!
Это плагин wepy, который позволяет использовать axios в небольших программах.
документация по аксиам | документация по wepy
При создании мини-программы функции функции wx.request
, встроенной в мини-программу, были сильно ограничены. Даже wepy.request
представляет собой просто инкапсуляцию исходной функции и не может предоставлять расширенные функции, такие как axios. in позволяет использовать большинство функций axios в небольших программах.
Сохраняя API как можно более близким к исходному API axios, этот плагин инкапсулирует wx.request
, wx.uploadFile
и wx.downloadFile
. Он также предоставляет функцию очереди запросов, снимая ограничение на отправку до 5 запросов. в то же время.
Если вам это нравится, поставьте звезду и поддержите. Проблемы и пиар приветствуются?
Используйте npm или Yarn для одновременной установки axios и wepy-plugin-axios.
npm установить axios wepy-plugin-axios --save пряжа добавить аксиомы wepy-plugin-axios
Примечание. Этот плагин необходимо использовать с wepy . В следующих примерах используется последняя версия wepy. Если вы не знаете, как использовать wepy или axios, сначала прочтите соответствующую документацию.
Настроить вепи
Добавьте элемент axios
в plugins
wepy.config.js
. У плагина нет опций, просто используйте в качестве опции пустой объект.
модуль.экспорт = { // ...другие плагины конфигурации: {// ...другие плагины axios: {} }}
Примечание. Если вы используете конфигурацию по умолчанию, созданную wepy, в конце файла есть следующий код:
модуль.экспорт.плагин = { углифийс: {// ... }, имиджмин: {// ... }}
Здесь также нужно вставить строку axios: {}
, иначе при генерации релизной версии возникнет ошибка.
Настроить аксиомы
Введите функцию для генерации адаптера из wepy-plugin-axios/dist/adapter
, а затем передайте экземпляр axios в эту функцию, чтобы получить адаптер.
Используйте axios.defaults
или axios.create
для установки свойств adapter
axios (рекомендуется последнее)
import axios from 'axios'import wepyAxiosAdapter from 'wepy-plugin-axios/dist/adapter'// Инициализация адаптера должна быть выполнена до любого другого axios.create const адаптер = wepyAxiosAdapter(axios)export default axios.create({ адаптер: адаптер // Это свойство является ключом к использованию аксиом в мини-программе // ...Другие свойства})
В следующем примере предполагается, что настройка завершена в соответствии с приведенным выше содержимым.
//Отправляем обычный GET-запрос axios.get('https://huajingkun.com/api/userinfo')//Отправляем данные json axios.request({ метод: «пост», URL: 'https://huajingkun.com/api/userinfo', данные: {псевдоним: '233' }})//Отправить данные в кодировке urlen axios.post('https://huajingkun.com/api/userinfo', { Nickname: '233' }, { заголовки: {'content-type': 'application/x-www-form-urlencoded' }})
Если в данных POST-запроса появляется поле $upload
, этот запрос рассматривается как запрос на загрузку файла.
axios.post('https://huajingkun.com/api/avatar', { $upload: {name: 'avatar',filePath: 'wxfile://sometempfilepath' // Результаты таких интерфейсов, как wx.chooseImage }, // ...другие данные, отправленные вместе})
Если в запросе GET responseType
является file
, этот запрос рассматривается как запрос на загрузку файла. Возвращается временный путь к файлу (подробности см. в документации по разработке мини-программы).
Примечание. В настоящее время протокол http можно использовать только
axios.get('http://www.baidu.com', {ResponseType: 'file' }).then(response => { console.log(response.data) // Выводим временный путь успешно загруженного файла})
Этот плагин обеспечивает поддержку большинства опций axios, а также вносит некоторые модификации на основе исходного API axios:
Примечание. Из-за ограниченной функции запроса мини-программы следующие параметры не поддерживаются. Если следующие параметры появятся во время использования, они будут проигнорированы. Функции, которых нет в этом списке, можно использовать.
timeout
withCredentials
auth
xsrfCookieName
xsrfHeaderName
onUploadProgress
onDownloadProgress
maxContentLength
maxRedirects
httpAgent
httpsAgent
proxy
url
: протокол должен быть указан, и это может быть только http или https. Только для загрузки файлов можно использовать http.
method
: может быть только методом, поддерживаемым мини-программой (подробности см. в документации по разработке мини-программы)
responseType
: может быть только один из json
, text
и file
Возвращенное содержимое аналогично возвращаемому содержимому axios:
{ // Данные ответа, отправленные сервером // Для запросов на загрузку файла содержимое поля данных представляет собой временный путь к данным файла: строка объекта | любая, // Статус кода ответа HTTP: номер, // HTTP-заголовки, возвращаемые сервером. Все имена заголовков указаны в нижнем регистре. // Для запросов на загрузку или скачивание поле заголовков всегда является пустым объектом (апплет не предоставляет возвращаемое содержимое заголовка). заголовки: объект, // Параметры запроса, используемые конфигурацией axios: object, // Передаем конкретное содержимое wx.request или wx.uploadFile или wx.downloadFile request: object}
Поскольку текущая система плагинов wepy недостаточно совершенна, этот плагин использует относительно «грязный» метод, позволяющий использовать аксиомы в wepy:
Непосредственное изменение исходного файла axios
Определение адаптеров в исходном файле axios lib/defaults.js
было удалено в lib/plugin.js
. Поскольку axios поддерживает как браузеры, так и Node.js, wepy не может игнорировать собственный модуль Node.js при упаковке. привести к разрушению упаковки.
Однако плагин wepy в настоящее время может изменять исходный файл только на последнем этапе упаковки и не может изменять информацию о зависимостях. Поэтому код, подготовленный для Node.js, нельзя игнорировать, поэтому его можно лишь грубо удалить. код сломанный браузером я его кстати тоже удалил, потому что XMLHttpRequest
нельзя использовать в мини программах, и нужно использовать полностью кастомный адаптер. После удаления размер файла тоже можно уменьшить.
Эта модификация означает, что если код вашего апплета разделяет папку node_modules
с другим кодом, другой код не сможет нормально использовать axios.
Поскольку в настоящее время у wepy нет функции псевдонима, вы можете только скопировать всю папку проекта в папку node_modules
тестового проекта во время разработки и изменить wepy-plugin-axios/dist/adapter
на wepy-plugin-axios/lib/adapter.js
Запустите следующую команду во время компиляции, чтобы получить окончательный файл в папке dist
:
npm запустить сборку
Массачусетский технологический институт