0

我在各种服务中大量使用了 Angular 中的 $http 模块,但希望将它与 Mulesofts RAML 解析器集成。这将使我不必为了适应 RAML 规范而更新 angular 的某些部分。

有人做过吗?需要哪些步骤?

如果这是不可能的,我想只使用 $resource 模块来获取 RAML 中描述的 REST 资源并没有太多的工作。

4

1 回答 1

1

将任何库集成到 AngularJS 中是完全可能的。

在你的情况下它更简单 - RAML 模块返回承诺,Angular 将使用它自己的承诺使用$q.when它免费为你处理整个摘要周期集成问题。

RAML 解析器的用法如下:

//example from the documentation
RAML.Parser.loadFile('http://localhost:9001/myAPI.raml').then( function(data) {
  console.log(data)
}, function(error) {
  console.log('Error parsing: ' + error);
});

要让它与 Angular 很好地配合,你需要做的就是包装它,$q.when它负责集成到摘要循环中:

$.when(RAML.Parser.loadFile('http://localhost:9001/myAPI.raml')).then( function(data) {
  $scope.someProp = data;
}).catch(function(error) {
  throw error; //Angular promises log when you use throw instead of $q.reject
});

当然,对于干净的 Angular 代码,您应该将其提取到服务中。

关键是 RAML 模块和 Angular 都使用 Promises/A+ 投诉的 Promise 实现,因此将两者集成起来非常简单。RAML 使用Q和 Angular 使用它的一个着陆版本,称为 $q。

于 2014-03-28T14:28:41.700 回答