fly.js — расширенный API под узлом

Node.js внешний интерфейс JavaScript API
fly.js — расширенный API под узлом

Это четвертая статья fly, посвященная использованию fly в мини-программах WeChat. Прежде чем читать эту статью, если вы еще не знаете fly. Сначала прочтите первые две статьи:
Первая статья: Оптимальное решение JS HTTP-запроса — fly.js
Часть 2: Fly против axios
Часть 3. Использование Fly для инициирования http-запросов в апплете WeChat

флай гибхаб адрес:github.com/wendux/fly

Fly поддерживает как среду браузера, так и среду узла. В узле, поскольку нет ограничений песочницы браузера, он имеет возможность доступа к файловой системе. По этой причине fly имеет специально улучшенные функции для узла, в основном добавляя загрузку и загрузку файлов. , Удобный метод.

API-интерфейсы, перечисленные в этом документе, поддерживаются адаптером узла, который поставляется с Fly по умолчанию.Если вы используете адаптеры, реализованные другими сторонними организациями, корректная работа этих API-интерфейсов не гарантируется.

Используемый адаптер узлаrequestБиблиотека, спасибо автору.

загрузка документа

download (url, savePath, params = null, options={})

url — адрес загрузки, savePath — путь для сохранения файла после успешной загрузки, params — параметр запроса, значение по умолчанию — null. вернутьPromiseобъект, простой пример выглядит следующим образом:

var fly=require("flyio")
var log=console.log
//文件下载
fly.download("http://localhost:8089/static/v.png", "./v.png")
    .then(d => {
        log(d.size)
    })
    .catch(log)

Загрузите изображение и сохраните его в текущей папке. После успеха структура данных, полученная к тому времени, будет следующей:

{
  size:3000,//文件大小,单位字节
  path:"/user/wendux/xx/v.png" //下载文件保存在本地的绝对路径
}

options

options — это конфигурация запроса, вы можете установить собственные заголовки и т. д. Подробнее см.запросить конфигурацию.

Нижний слой

Принцип загрузки файла Fly заключается в выборе опцииresponseTypeУстановите «поток», тогда fly будет передавать поток ответа на верхний уровень при получении данных, а затем читать и сохранять его, поэтому мы также можем добиться того же эффекта следующим образом:

fly.get("http://localhost:8089/static/v.png",null,{responseType:"stream"})
  .then(d=>{
   //d.data为buffer对象
   fs.writeFile("v.png", d.data,(err)=>{
     //错误处理  
   })
  })

Файл загружен

upload(url,formData,options={})

formData — это объект, и браузерFormDataсходство. Он может включать как обычные поля, так и файлы.

var fly=require("flyio")

//上传单个文件
var formData = {
    file: fs.createReadStream('./v.png'), //文件
}
fly.upload("http://localhost/upload", formData)
    .then(log).catch(log)

//可以包括多个字段/文件
var formData = {
    name:"v.png", //普通的字段
    avatar: fs.createReadStream('./v.png'), //文件
    resume: fs.createReadStream('./resume.docx'), //文件
    attachments:[ //可以通过数组
        fs.createReadStream('./file1.zip'),
        fs.createReadStream('./file2.zip')
    ]
}

fly.upload("http://localhost/upload", formData)
    .then(log).catch(log)

загрузка будет запрашиватьсяcontent-typeУстановите "multipart/form-data".

⚠️ Большинство http-серверов имеют ограничение на размер загружаемых файлов в одном запросе, и не рекомендуется загружать несколько файлов в одном запросе.

options

options — это конфигурация запроса, вы можете установить собственные заголовки и т. д. Подробнее см.запросить конфигурацию.

$http

Преимущество использования Fly заключается в том, что он инкапсулирует библиотеку запросов и предоставляет те же возможности на стороне браузера.Promiseинтерфейс. Если вы хотите напрямую использовать собственный API библиотеки запросов, вы можете передатьfly.$httpЗвоните напрямую,$httpЭто объект запроса, например:

//Stream
fly.$http('http://google.com/doodle.png')
  .pipe(fs.createWriteStream('doodle.png'))
//post请求
fly.$http.post('http://service.com/upload', {form:{key:'value'}})

Пожалуйста, перейдите к подробной документацииGithub request.

Создать новый экземпляр

При создании нового экземпляра в Node вам нужно ссылаться на негоsrc/node/index.js:

var Fly= require("./src/node")
var newFly=new Fly;

наконец

Опубликуйте адрес fly github еще раз, если он вам нравится, добро пожаловать в звездочку, чтобы больше людей узнали о fly, спасибо за вашу поддержку:github.com/wendux/fly