0

我们的应用程序由nodejsexpressreactjs和组成newforms。要打休息电话,我们正在使用:

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,然后要求它并在整个应用程序中使用它。通过这样做,我们可以在一个地方应用一些通用代码(如错误处理、日志记录、根据错误代码重定向到特定错误页面)。

感谢这方面的任何帮助。

4

2 回答 2

1

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

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

于 2015-07-29T13:22:28.363 回答
0

you can always require it like

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)
});
于 2015-07-29T00:49:05.243 回答