在node项目中对request的封装
2020-03-30 本文已影响0人
前端艾希
背景
因为我的node
项目需要向其他服务发起请求,所以在网上找了找在node
中用的最多的http
库,通过搜索得知request
和axios
是比较好用的,但是因为我们的项目中已经安装了request
所以为了减少项目体积,我决定也使用request
,然后发现项目中没有对request
进行封装,使用起来不是很方便,所以下面主要介绍我对request
的封装
代码
没什么其他优点,只是post
支持了两种content-type
,分别是json
和formData
,文章的末尾有官方文档,有其他需求的小伙伴可参考文档自行改造~
/*
* @Author: Bing Xu
* @Date: 2020-03-30 10:06:10
* @LastEditTime: 2020-03-30 11:04:35
* @LastEditors: Bing Xu
* @Description:
* @FilePath: /ad-api-nodejs/utils/request.js
*/
const request = require('request')
const baseUrl = require('../config/index').DmpServe.url
const _ = require('underscore')
function post (url, data, isJson = true) {
const options = {
url,
baseUrl,
method: 'POST'
}
if (isJson) _.extend(options, {json: true, body: JSON.stringify(data)})
else _.extend(options, {form: data})
return new Promise ((resolve, reject) => {
request(options, (err, res, data) => {
if (err) return reject(err)
if (res.statusCode == 200) resolve(data)
})
})
}
function get (url, params = {}) {
return new Promise((resolve, reject) => {
request(url, {
method: 'GET',
qs: params,
baseUrl
}, (err, res, body) => {
if (err) return reject(err)
else if (res.statusCode == 200) resolve(body)
})
})
}
module.exports = {
post,
get
}
参考文档
今天有点累,不想多写,有其他需求的小伙伴可直接参考文档。
https://github.com/request/request