jaxfis
v1.0.3
Published
Library for executing Ajax requests on the server and client side
Downloads
3
Maintainers
Readme
Модуль для работы с AJAX в Browser JS и Node.JS
Оглавление
Краткое описание
Jax это универсальный кросс-платформенный класс для отправки запросов из браузера на сервер, либо с сервера на сервер. Библиотека работает одинаково как на Node.JS так и в браузерах. Поддерживаются следующие запросы:
GET
POST
PUT
DELETE
По умолчанию для отправки запросов из браузера используется XMLHttpRequest, есть поддержка Fetch API. Для отправки с Node.JS используются стандартные пакеты Node - http/https. Различия в отправке данных с сервера и клиента заключаются только в отправляемых данных. Для удобства и поддержки кросплатформенности пакет включает в себя несколько вспомогательных классов - JFile, JFileList, JFormData и JBuffer. Для отправки запросов следует использовать методы и свойства Jax которые будут описаны ниже
Класс Jax
Поля и свойства
Jax.SEND_TYPES (Object)
Объект-перечисление представляющий способы отправки данных, имеет следующие значения:
- URL - отправляет данные как закодированную URL-строку ( используется по умолчанию для GET и DELETE запросов ), нельзя отправлять файлы
- JSON - отправляет данные в формате JSON
- FORM - отправляет данные с заголовком multipart/form-data ( используется по умолчанию при отправке форм )
Jax.RESPONSE_TYPES (Object)
Объект-перечисление представляющий формат получения ответа на запрос, имеет следующие значения
- TEXT - возвращает ответ в виде текстовой строки
- BUFFER - возвращает объект JBuffer
- JSON - возвращает объект с данными из JSON
- BLOB - возвращает объект Blob
- DOC - В зависимости от используемого API возвращает разный результат
Jax.CREDENTIALS (Object)
Объект-перечисление представляющий разрешения на отправку стандартных учетных данных, имеет следующие значения
- NO_SEND - Не отправлять учетные данные при отправке запроса ( используется по умолчанию ) ( при отправке с помощью XMLHttpRequest, равен withCredentials=false )
- SAME_ORIGIN - Отправляет учетные данные только если вызвающий скрипт находится в том же источнике что и URL-адрес запроса ( при отправке с помощью XMLHttpRequest, равен withCredentials=false )
- ALL_SEND - Всегда отправляет учетные данные ( при отправке с помощью XMLHttpRequest, равен withCredentials=true )
Jax.MIME_FILES (Array<[any,any]>) (только чтение)
Представляет массив mime-типов в котором тип и расширение хранятся по парам ( Пример: ['video/3gpp','.3gp'] )
Jax.PROTOCOL (String) (только чтение)
(значение по умолчанию: 'http')
Возвращает протокол используемый по умолчанию для отправки запросов. (Для установки протокола см. Jax.setSSL())
Jax.useFetch (Boolean)
Представляет логическое значение, указывающее следует ли использовать Fetch API вместо XMLHttpRequest при отправке запросов ( по умолчанию - false )( работает только для браузеров )
Jax.isServer (Boolean)
Представляет логическое значение, определяющее откуда был запущен скрипт, из Node.JS или браузера ( определяется автоматически при использовании )
Функции
Jax.setSSL(isSet)
Функция для установки протокола запросов. Протокол нужен в том случае если он не указан в URL-адресе запроса
Параметры:
- isSet ( Boolean ) (не обязательный) - Логическое значение, если true - установит HTTPS (по умолчанию), если false - HTTP
Jax.get(url,params)
Функция для отправки GET-запроса
Параметры:
- url ( String ) - URL-адрес отправки
- params ( Object ) - Объект с параметрами запроса
- params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
- params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
- params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
- params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
- params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )
Возврат:
( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида
{
success: true
data: /*response*/
headers: /*response headers Map*/
}
// Свойство data необходимо проверять на undefined, т.к. его может и не быть если с сервера был отправлен только код состояния
Пример GET-запроса:
Jax.get('http://example/jax-get',{
body:{
user:'TestUser',
age:18,
policy:true,
}
}).then(result=>{
console.log(result)
}).catch(err=>{
console.error(err)
})
Jax.post(url,params)
Функция для отправки POST-запроса
Параметры:
- url ( String ) - URL-адрес отправки
- params ( Object ) - Объект с параметрами запроса
- params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
- params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера). Способ отправки зависит от нескольких факторов, подробнее об этом смотрите ниже - [Перейти]
- params.sendType ( String )( не обязательный ) - Устанавливает способ отправки, смотреть - Jax.SEND_TYPES
- params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
- params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
- params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )
Возврат:
( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида
{
success: true
data: /*response*/
headers: /*response headers Map*/
}
Пример POST-запроса:
Jax.post('http://example/jax-post',{
body:{
user:'TestUser',
age:18,
policy:true,
}
}).then(result=>{
console.log(result)
}).catch(err=>{
console.error(err)
})
Особенности POST
Случай №1:
При передаче параметра sendType, он может быть проигнорирован в случае если в body был передан id HTML-формы или HTMLFormElement, но только в том случае если в форме есть поля input c типом file. Тогда неважно какой тип был передан в sendType он по умолчанию будет заменен на multipart/form-data.
Случай №2:
Если в body был передан объект в свойствах которого есть значения типов JFile, JFileList, File, FileList, а sendType установлен как application/x-www-form-urlencoded (по умолчанию), то эти свойства будут игнорироваться.
Случай №3:
Если в body был передан объект в свойствах которого есть значения типов JFile, JFileList, File, FileList, а sendType установлен как application/json, то эти свойства будут сериализованы в JSON как пустые объекты, т.к. у объектов этих типов нет открытых свойств
Отправка файлов через POST
Для корректной отправки файлов рекомендуется устанавливать sendType в multipart/form-data (Jax.SEND_TYPES.FORM), и передавать данные в виде FormData, JFormData либо объекта. Примеры смотрите ниже.
Пример №1: Отправка с использованием id формы
Предположим что нужно передать форму с файлам с клиента(браузера) на сервер. На клиенте есть следующая форма для загрузки изображений:
<form id="form">
<input type="text" id="email" name="email">
<input type="file" id="file" name="photo" multiple>
<button id="send-button" type="button">Send</button>
</form>
Запрос:
Jax.post('http://example/send-files',{
body:'form'
}).then(result=>{
console.log(result)
}).catch(err=>{
console.error(err)
})
Запрос будет выполнен корректно и все данные переданные в форму буду конвертированы внутри запроса в multipart/form-data ( см. Случай№1 )
Пример №2: Отправка с использованием HTMLFormElement За основу возьмем HTML-форму с предыдущего примера
let form = document.getElementById('form')
if(form){
Jax.post('http://example/send-files',{
body:form
}).then(result=>{
console.log(result)
}).catch(err=>{
console.error(err)
})
}
Так же как и в первом примере запрос будет успешно отработан
Пример №3: Отправка с использованием JFormData или Object
Данный способ подойдет когда нет HTMLFormElement на странице, либо при отправке с сервера на сервер(будет отличаться только способ загрузки файлов, подробнее см. JFile и JFileList).
Предположим что мы отправляем два файла и email пользователя с одного сервера на другой:
let form = new JFormData()
let files = await JFileList.load([
'./images/1.png',
'./images/2.png'
])
if(files && files?.length){
form.set('images',files)
form.set('email','[email protected]')
Jax.post('http://example/send-files',{
body:form,
sendType:Jax.SEND_TYPES.FORM //явно указываем способ отправки
}).then(result=>{
console.log(result)
}).catch(err=>{
console.error(err)
})
}
Тоже самое но с использованием объекта:
let files = await JFileList.load([
'./images/1.png',
'./images/2.png'
])
if(files && files?.length){
Jax.post('http://example/send-files',{
body:{
files,
email:'[email protected]'
},
sendType:Jax.SEND_TYPES.FORM //явно указываем способ отправки
}).then(result=>{
console.log(result)
}).catch(err=>{
console.error(err)
})
}
Если у вы хотите отправить только файлы, рекомендуется посмотреть Jax.file
Отправка POST/PUT запроса без параметров
Метод POST как и PUT допускается использовать без передачи params.body и других параметров, используя только URL, при этом если в строке адреса присутсвуют url encoded параметры они автоматически будут отправлены в теле запроса. Пример:
let url = Url.encode({user: 'TestUser', age: 18,},'http://example/send-url-post')
// В url: http://example/send-url-post?user=TestUser&age=18
Jax.post(url).then(result => {
console.log(result)
}).catch(err => {
console.error(err)
})
// При отправке будет указан адрес без параметров - http://example/send-url-post, все параметры будут переданы в тело запроса
Jax.put(url,params)
Функция для отправки PUT-запроса
Параметры:
- url ( String ) - URL-адрес отправки
- params ( Object ) - Объект с параметрами запроса
- params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
- params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
- params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
- params.sendType ( String )( не обязательный ) - Устанавливает способ отправки, смотреть - Jax.SEND_TYPES
- params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
- params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )
Возврат:
( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида
{
success: true
data: /*response*/
headers: /*response headers Map*/
}
// Свойство data необходимо проверять на undefined, т.к. его может и не быть если с сервера был отправлен только код состояния
Jax.delete(url,params)
Функция для отправки DELETE-запроса
Параметры:
- url ( String ) - URL-адрес отправки
- params ( Object ) - Объект с параметрами запроса
- params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
- params.body ( Object | JFormData | FormData | Map | HTMLFormElement | string )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
- params.sendType ( String )( не обязательный ) - Устанавливает способ отправки, смотреть - Jax.SEND_TYPES
- params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
- params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
- params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )
Возврат:
( Promise<object> ) В случае успешного выполнения вернет объект с результатом следующего вида
{
success: true
data: /*response*/
headers: /*response headers Map*/
}
// Свойство data необходимо проверять на undefined, т.к. его может и не быть если с сервера был отправлен только код состояния
Обратите внимание что при отправке запроса DELETE с sendType = application/x-www-form-urlencoded все данные будут преобразованы в url строку но при этом переданы в тело запроса как и в методах POST/PUT, если вы хотите передать параметры в url строке адреса, нужно сделать это вручную. Для этого можно использовать класс Url, например:
let url = Url.encode({user: 'TestUser', age: 18,},'http://example/delete-url-test')
Jax.delete(url).then(res => {
console.log(`DELETE success: ${res}`)
}).catch(err => {
console.log(`DELETE error: ${err}`)
})
Jax.file(url,params)
Функция для отправки файлов, используется POST-запрос. В отличии от Jax.post() можно передавать только файловые объекты. При этом есть отправка в multipart/form-data формате, и отправка бинарных данных каждого файла в отдельном запросе со своим заголовком contentType
Параметры:
- url ( String ) - URL-адрес отправки
- params ( Object ) - Объект с параметрами запроса
- params.headers ( Map<string,string>)(не обязательный ) - Коллекция дополнительных заголовков запроса, где ключ - наименование заголовка. Сontent-Type заголовок добавлять не нужно!
- params.body ( File | FileList | JFile | JFileList )( не обязательный ) - Тело запроса, может быть объектом, формой, HTML-элементом либо строкой(id формы, только для браузера), все данные будут закодированны в виде URL строки при отправке. Файлы отправлять нельзя
- params.isMultipart ( Boolean ) - Отправить данные с заголовком multipart/form-data (по умолчанию true)
- params.responseType ( String )( не обязательный ) - Устанавливает тип ответа, смотреть - Jax.RESPONSE_TYPES
- params.credentials ( String )( не обязательный ) - Параметр для установки разрешения на отправку учетных данных, смотреть - Jax.CREDENTIALS
- params.progress ( Function )( не обязательный ) - Callback-функция для получения текущего прогресса отправки данных ( не работает в Node.JS )
Возврат:
( Promise<object> ) Возвращает Promise c результатом в случае успешного выполнения * (При установке isMultipart:false и передаче коллекции файлов возвращает массив с результатами всех промисов для каждого файла)
Пример отправки файлов:
let fileInput = document.getElementById('file')
let files = await JFileList.load(fileInput.files)
if(files && files?.length){
Jax.file('http://example/send-files', {
body: files,
}).then(result => {
console.log(result)
}).catch(err => {
console.error(err)
})
}
Jax.jsonMapReplacer(key,value)
Функция для правильной сериализации Map в json с помощью функции JSON.stringify()
Параметры:
- key ( any ) - наименование параметра
- value ( any ) - значение
Возврат:
( Object ) Возвращает Map преобразованный в объект
Jax.jsonMapReviewer(key,value)
Функция для правильной десериализации Map с помощью функции JSON.parse() (работает только для Map сериализованных с помощью Jax.jsonMapReplacer)
Параметры:
- key ( any ) - наименование параметра
- value ( any ) - значение
Возврат:
( Map ) Преобразует сериализованные объекты в Map если в них есть свойство bodyType:'Map'
Класс JFile
Класс предназначен для облегчения загрузки и отправки файлов. Данный класс можно использовать в браузерах и Node.JS
Поля и свойства
(JFile) object.contentType (String) ( только чтение )
Свойство содержащее mime тип файла
(JFile)object.fullName (String) ( только чтение )
Свойство содержит полное имя файла с расширением
(JFile) object.name (String) ( только чтение )
Свойство содержащее имя файла без расширения
(JFile) object.ext (String) ( только чтение )
Свойство с расширением файла
(JFile) object.size (Number) ( только чтение )
Свойство содержащее размер файла в байтах
(JFile) object.data (JBuffer) ( только чтение )
Свойство содержащее данные из файла в виде JBuffer
(JFile) object.path (String) ( только чтение ) ( только в Node.js )
Свойство содержащее путь к файлу
Функции
JFile.load(file)
Функция для загрузки файла и создания нового объекта jFile
Параметры:
- file ( String | File ) - Объект File( в браузерах ), либо путь к файлу в виде строки ( Node.JS )
Возврат:
( Promise<JFile|undefined> ) В случае успешной загрузки файла возвращает промис с новым объектом JFile, иначе вернет промис с undefined
Пример загрузки файла:
let file = await JFile.load('./images/test.png') // в Node.js
let fileBrowser = await JFile.load(fileInput.files[0]) // в браузере, fileInput это input элемент с type=file
Класс JFileList
Класс является аналогом браузерного FileList, позволяет создавать итерируемые объекты с которыми можно работать как с массивами. Элементами коллекции могут быть только JFile объекты
Поля и свойства
(JFileList)object.length (Number) ( только чтениe )
Свойство содержащее кол-во элементов коллекции
Функции
JFileList.constructor(files)
Конструктор в который можно передать массив с объектами JFile
Параметры:
- files ( Array<JFile> ) - Массив объектов JFile, если в массиве есть значения другого типа они будут отфильтрованы
JFileList.load(files)
Функция для загрузки файлов и создания новой коллекции
Параметры:
- files ( FileList|File|JFile|Array<string>|Array<File>|Array<JFile> ) - Файловые объекты, массив или коллекция файловых объектов или путей к файлам
Возврат:
( Promise<JFileList|undefined> ) Возвращает промис с новым объектом JFileList. При этом в коллекцию будут добавлены только успешно загруженные файлы. Если ни один файл не удалось загрузить, промис вернет пустую коллекцию, а в случае ошибки undefined
Пример загрузки файлов и создания нового JFileList:
let files = await JFileList.load([
'./images/1.png',
'./images/2.png'
])
(JFileList) object.push(file)
Добавляет новый элемент в конец коллекции, добавить можно только объект типа JFile
Параметры:
- file ( JFile ) - Объект JFile
Возврат:
( Boolean ) Возвращает логический результат выполнения функции
Пример:
let file = await JFile.load('./images/1.png')
let list = new JFileList()
if(file)
console.log(list.push(file)) // Выведет true, новый элемент будет добавлен
let file2 = './images/2.png'
console.log(list.push(file2)) // Выведет false
(JFileList) object.pop()
Извлекает последний элемент и удаляет его из коллекции
Возврат:
( JFile|undefined ) Возвращает объект JFile, либо undefined если коллекция пуста
(JFileList) object.shift()
Извлекает первый элемент и удаляет его из коллекции
Возврат:
( JFile|undefined ) Возвращает объект JFile, либо undefined если коллекция пуста
(JFileList) object.unshift(file)
Добавляет новый элемент в начало коллекции, добавить можно только объект типа JFile
Параметры:
- file ( JFile ) - Объект JFile
Возврат:
( Boolean ) Возвращает логический результат выполнения функции (см push())
(JFileList) object.concat(list)
Функция для объединения двух и более коллекций в одну
Параметры:
- list ( JFileList|Array<JFileList> ) - Объект либо массив объектов JFileList
Возврат:
( JFileList ) Возвращает новую коллекцию JFileList с элементами объединенных коллекций
(JFileList) object.toArray()
Функция для получения обычного массива из JFileList
Возврат:
( Array<JFile> ) Возвращает массив с JFile объектами
(JFileList) object.toString()
Функция для строчного вывода JFileList
Возврат:
( String ) Возвращает форматированную строку с содержимым JFileList
Класс JFormData
Класс является аналогом браузерного FormData, позволяет создать объект с данными, которые хранятся в виде пар (ключ-значение) и правильно преобразовывать эти данные при отправке запроса
Функции
(JFormData)object.from(params, filterFiles)
Функция для преобразования объектов и коллекций в объект JFormData
Параметры:
- params ( JFormData | Map | Object ) - Map коллекция или объект
- filterFiles ( Boolean ) ( не обязательный ) - Если true - фильтрует файловые классы (File,FileList,JFile,JFileList) (по умолчанию - false)
Возврат:
( Promise<JFormData> ) Возвращает промис с новым объектом JFormData
(JFormData)object.fromDOM(params, filterFiles)
Функция для получения данных из HTML формы и их записи в новый JFormData объект
Параметры:
- params ( HTMLFormElement | string ) - элемент HTML формы либо его id
- filterFiles ( Boolean ) ( не обязательный ) - Параметр указывающий нужно ли отфильтровывать поля input[type="file"] (по умолчанию - false)
Возврат:
( Promise<JFormData> ) Возвращает промис с новым объектом JFormData
(JFormData)object.get(name)
Функция для получения значения по его имени(ключу)
Параметры:
- name ( string ) - Строковое наименование параметра
Возврат:
( any ) Возвращает значение по его ключу если оно есть
(JFormData)object.getAll()
Функция для получения всех значений JFormData в виде Map коллекции
Возврат:
( Map ) Возвращает Map-коллекцию
(JFormData)object.set(name,value)
Добавляет новую пару ключ-значение в JFormData
Параметры:
- name ( string ) - Строковое наименование параметра
- value ( any ) - Значение параметра
(JFormData)object.isset(name)
Функция для проверки существования параметра в JFormData по его имени
Параметры:
- name ( string ) - Строковое наименование параметра
Возврат:
( Boolean ) Возвращает логическое значение
(JFormData)object.delete(name)
Функция для удаления параметра из JFormData по его имени
Параметры:
- name ( string ) - Строковое наименование параметра
Возврат:
( Boolean ) Возвращает логическое значение(true - если параметр найден и удален, иначе false)
(JFormData)object.entries()
Функция для преобразования JFormData в итерируемый объект(массив) пар (ключ-значение)
Возврат:
( IterableIterator<[any,any]> ) Массив пар (ключ-значение)
(JFormData)object.toObj()
Функция для преобразования JFormData в объект
Возврат:
( Object ) Объект JS в котором ключи = свойства объекта
(JFormData)object.toMultipart()
Асинхронная функция для преобразования JFormData в формат multipart/form-data
Возврат:
( Promise<JBuffer|undefined> ) Возвращает промис с результатом JBuffer(в случае успешного выполнения)
Класс JBuffer
Вспомогательный класс для преобразования данных в бинарный формат, так же как и Buffer NodeJS основан на UInt8Array, но в отличии от него работает и в браузере. В JBuffer можно свободно конвертировать ArrayBuffer, Buffer, UInt8Array и Blob
Функции
JBuffer.constructor(buffer)
Конструктор для создания JBuffer из одного или нескольких байт массивов разного типа
Параметры:
- buffer ( ArrayBuffer | Uint8Array | JBuffer | Buffer | string | Array<ArrayBuffer|Uint8Array|JBuffer|Buffer> ) - Map коллекция или объект
JBuffer.fromBlob(blob)
Асинхронная функция для получения JBuffer из Blob объекта
Параметры:
- buffer ( Blob ) - Blob объект
Возврат:
( Promise<JBuffer|undefined> ) Возвращает промис с результатом JBuffer(в случае успешного выполнения)
JBuffer.concat(buffers)
Статическая функция для объединения нескольких бинарных массивов в новый JBuffer
Параметры:
- buffers ( Array<Buffer|JBuffer|Uint8Array|any> ) - Массив бинарных массивов
Возврат:
( JBuffer | undefined ) Возвращает JBuffer(в случае успешного выполнения)
JBuffer.concat(buffers)
Статическая функция для объединения нескольких бинарных массивов в новый JBuffer
Параметры:
- buffers ( Array<Buffer|JBuffer|Uint8Array|any> ) - Массив бинарных массивов
Возврат:
( JBuffer | undefined ) Возвращает JBuffer(в случае успешного выполнения)
JBuffer.toText(buffer)
Статическая функция для декодирования буфера в строку
Параметры:
- buffer ( JBuffer | ArrayBuffer | Uint8Array | Buffer ) - Бинарный массив
Возврат:
( String | undefined ) Возвращает строку в случае успешного выполнения
(JBuffer)object.concat(buffers)
Функция для объединения текущего JBuffer объекта с бинарными массивами
Параметры:
- buffers ( Array<Buffer|ArrayBuffer|JBuffer|Uint8Array> | Buffer | JBuffer | Uint8Array | ArrayBuffer ) - Массив бинарных массивов или один бинарный массив
Возврат:
( JBuffer | undefined ) Возвращает JBuffer(в случае успешного выполнения)
(JBuffer)object.split(len,all)
Функция для разбиения JBuffer объекта на части
Параметры:
- len ( Number ) - Длина/смещение по которому разбивается буфер
- all ( Boolean ) ( не обязательный ) - Параметр указывающий разбивать ли весь буфер до конца (по умолчанию - true)
Возврат:
( Array<JBuffer> | undefined ) Возвращает массив с JBuffer объектами в случае успешного выполнения
(JBuffer)object.toText()
Функция для декодирования текущего объекта JBuffer в строку
Возврат:
( String ) Возвращает декодированную строку
Класс Url
Вспомогательный класс для преобразования данных из объектов и коллекций в URL адрес и обратно
Функции
Url.encode(params, addr, add)
Функция для преобразования объекта параметров в URL
Параметры:
- params ( Map | FormData | JFormData | Object ) - Объект параметров
- addr ( String )( не обязательный ) - Адресная строка без параметров
- add ( String )( не обязательный ) - Добавочный параметр для обработки вложенных объектов
Возврат:
( String ) Возвращает URL строку
Пример:
let object={
user:'Alex',
age:18,
settings:{
player:{
volume:[10,15],
mute:true
}
},
location:[100,200,[500,550]]
}
console.log(Url.encode(object,'http://example.com/user')) // Преобразует в url адрес с параметрами
/* Вывод: http://example.com/user?user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550 */
console.log(Url.encode(object)) // Преобразует в url параметры
/* user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550 */
Url.decode(url)
Функция для преобразования параметров из URL в объект
Параметры:
- url ( String ) - Строка URL параметров
Возврат:
( Object ) Возвращает объект с параметрами
Пример:
let url = 'http://example.com/user?user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550'
let urlParam = 'user=Alex&age=18&settings[player][volume][]=10&settings[player][volume][]=15&settings[player][mute]=true&location[]=100&location[]=200&location[2][]=500&location[2][]=550'
console.log(Url.decode(url))
console.log(Url.decode(urlParam))
/* В вариантах с адресом и без, адрес будет отсекаться, в результате будет получен следующий объект:
{
user:'Alex',
age:18,
settings:{
player:{
volume:[10,15],
mute:true
}
},
location:[100,200,[500,550]]
}
*/