【问题标题】:Abstracting the superagent抽象超级代理
【发布时间】:2015-10-19 17:19:31
【问题描述】:

我们的应用程序由nodejsexpressreactjsnewforms 组成。 我们正在使用休息电话:

var RestClient = require('superagent-ls')

我们正在打休息电话,例如:

cleanBirthDate(callback) {
    var {birthDate} = this.cleanedData
    var formattedDob = moment (birthDate).format('DDMMYYYY')

    RestClient.get(Global.getBirthDateServiceUrl() + '/' + formattedDob)
        .end((err, res) => {
          if (err) {
            callback (err)
          }
          else if (res.clientError) {
            var message = errorsMappingSwitch(res.body.error)
            callback(null, forms.ValidationError(message))
          }
          else {
            callback(null)
          }
        })
  },

我们想将RestClient 相关代码移动到我们自己的文件中,比如RestCleint.js,然后需要它并在整个应用程序中使用它。通过这样做,我们可以在一个地方应用一些通用代码(如错误处理、日志记录、根据错误代码重定向到特定错误页面)。

感谢这方面的任何帮助。

【问题讨论】:

  • 您有什么特别的问题吗?你有没有尝试过?

标签: node.js reactjs superagent newforms


【解决方案1】:

我做了您需要的完全相同的事情(即使使用超级代理)。我在 /utils 文件夹中使用 API 代码创建了模块,并在适用时需要它们。为了更加抽象,我们使用 CoffeeScript 来创建继承自 BaseAPIObject 的类,并使用 API.Posts.getAll().end() 等调用。

这篇文章对理解如何编写自己的模块非常有帮助:Export This: Interface Design Patterns for Node.js Modules

【讨论】:

    【解决方案2】:

    你可以随时要求它

    RestClient.js
    
    export default function callApi(callback) {
    //your rest code
    // use the callback here in the callback of your call.
    }
    
    app.js
    
    import {callApi} from './RestClient';
    
    callApi((err, result) => {
      if (err) console.log(err)
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2015-01-22
      相关资源
      最近更新 更多