美文网首页
在node项目中对request的封装

在node项目中对request的封装

作者: 前端艾希 | 来源:发表于2020-03-30 22:52 被阅读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

    相关文章

      网友评论

          本文标题:在node项目中对request的封装

          本文链接:https://www.haomeiwen.com/subject/ekobuhtx.html