在前端开发中,我们常常需要发送网络请求来获取数据。而使用 npm 作为包管理工具,则可以通过安装第三方库来简化我们的代码实现。
min-request 是一个基于 Promise 的 HTTP 请求库,它支持浏览器和 Node.js 环境,并提供了许多实用的功能。本文将详细介绍如何使用 min-request。
安装
使用 npm 安装 min-request:
npm install min-request
基本用法
使用 min-request 发送 GET 请求:
const { request } = require('min-request') request({ url: 'https://jsonplaceholder.typicode.com/posts', method: 'GET' }).then(response => { console.log(response.data) })
使用 min-request 发送 POST 请求:
-- -------------------- ---- ------- ----- - ------- - - ---------------------- --------- ---- --------------------------------------------- ------- ------- ----- - ------ ------ ----- ------ ------- - - ---------------- -- - -------------------------- --
配置项
min-request 提供了一些配置项来满足各种需求。
请求方式(method)
请求方式有 GET、POST、PUT、DELETE、HEAD、OPTIONS 等,可以通过传递 method
属性来指定。
request({ url: '/path/to/api', method: 'POST', data: { foo: 'bar' } })
请求头(headers)
可以通过传递 headers
属性来设置请求头。
request({ url: '/path/to/api', headers: { 'Content-Type': 'application/json' }, data: { foo: 'bar' } })
超时时间(timeout)
可以通过传递 timeout
属性来设置超时时间,单位为毫秒。
request({ url: '/path/to/api', timeout: 5000 })
响应类型(responseType)
可以通过传递 responseType
属性来设置响应类型,可选值有:text、json、arraybuffer、blob、document。
request({ url: '/path/to/api', responseType: 'json' })
拦截器
min-request 支持拦截器,可以在请求之前或响应之后做一些操作。拦截器分为请求拦截器和响应拦截器。
请求拦截器(requestInterceptors)
可以通过传递 requestInterceptors
数组来设置请求拦截器,每个拦截器都是一个函数,接收一个 config 对象作为参数,并返回一个新的 config 对象。
-- -------------------- ---- ------- --------- ---- --------------- -------------------- - ------ -- - -- ------ ------ ---- ------ ------ - - --
响应拦截器(responseInterceptors)
可以通过传递 responseInterceptors
数组来设置响应拦截器,每个拦截器都是一个函数,接收一个 response 对象作为参数,并返回一个新的 response 对象。
-- -------------------- ---- ------- --------- ---- --------------- --------------------- - -------- -- - -- ------ -------- ---- ------ -------- - - --
示例
下面是一个完整的示例,展示了如何使用 min-request 发送 GET、POST 请求,并使用请求拦截器和响应拦截器。
-- -------------------- ---- ------- ----- - ------- - - ---------------------- -- ---------- ------------------------------------ -- - -- ------ ------ ---- --------------------- ------- ------ ------ -- -- ---------- --------------------------------------- -- - -- ---- - ----------------------------------------------------------- -------- ----------------------------------------------------------------------------------