在node项目中对request的封装

2020-03-30  本文已影响0人  前端艾希

背景

因为我的node项目需要向其他服务发起请求,所以在网上找了找在node中用的最多的http库,通过搜索得知requestaxios是比较好用的,但是因为我们的项目中已经安装了request所以为了减少项目体积,我决定也使用request,然后发现项目中没有对request进行封装,使用起来不是很方便,所以下面主要介绍我对request的封装

代码

没什么其他优点,只是post支持了两种content-type,分别是jsonformData,文章的末尾有官方文档,有其他需求的小伙伴可参考文档自行改造~

/*
 * @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

上一篇下一篇

猜你喜欢

热点阅读