使用 SwaggerJS 创建 API 工厂
Creating API factory with SwaggerJS
所以我有一个长期存在的APIService工厂,它创建函数以通过招摇的函数传递到UI。以下是工厂的片段:
'use strict';
angular.module('myApp').factory('APIService', function ($http, $window, $q, swaggerClient, $mdToast) {
var ApiDoc = {};
ApiDoc.getAllBookmarks = function () {
return $q(function (resolve, reject) {
$http.get('client/components/api/Schema.json')
.success(function (data) {
var schema = data;
_.each(schema.apis, function (b) {
b.apiDeclaration.basePath = $window.location.origin;
})
var api = swaggerClient(schema);
api = api.apiBookmarks.getAll();
resolve(api);
});
});
}
return ApiDoc;
});
以下是它在控制器中的用例片段:
$scope.getAllDashboards = function () {
APIService.getAllBookmarks().then(function(data){
if (data.length > 0){
$scope.dashboardsList = data;
$scope.emptyDash = false;
} else {
$scope.emptyDash = true;
}
})
}
$scope.getAllDashboards();
这里固有的问题是,如果我在一个控制器中有 30 个 API 函数调用,那么实际上有 30 个 $http 个 schema.json 请求是不需要的。问题是我无法弄清楚如何请求/存储该 json 并以与现在相同的方式大摇大摆地调用函数(否则我必须更改控制器中的 200+ 方法,呃)。我试过这个:
// var api = null;
// $http.get('client/components/api/Schema.json')
// .success(function (data) {
// var schema = data;
// _.each(schema.apis, function (b) {
// b.apiDeclaration.basePath = $window.location.origin;
// })
// api = swaggerClient(schema);
// });
但是在那之后无法让函数正确读取它,或者像控制器期望的那样以承诺返回函数调用的结果。
我这里没有其他JS开发人员,所以我需要你们所有人的帮助!多谢!
这很丑陋。如果您将 swagger-client 升级到更现代的东西,您有一些选择。
首先,您可以将模式缓存为对象,并使用参数 spec
在 swaggerClient 构造函数中提供它。 构造目标主机时,仍需要将目标主机的 URL 传递给客户端。 这样,就不需要远程调用任何东西。
接下来,您可以了解如何保留适当的 swaggerClient 实例,并在每次调用中使用它。
相关文章:
- 如何更改bigquery API中的计费层选项
- Amazon S3 REST API大小不正确
- 客户端服务器REST API captcha实现
- 使用Facebook live API创建实时视频对象时的隐私设置
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- Angularjs工厂注入错误
- 谷歌日历 api 调用可以在角度工厂内返回承诺吗?
- AngularJS与我的PHP API:获得值的工厂(async:false need alternative)
- 使用 SwaggerJS 创建 API 工厂
- API$http delete从angular中的工厂调用时返回405
- 如何将Rails current_user传递给AngularJS工厂API调用
- 在AngularJS + Chrome Apps api中访问工厂属性
- 组合多个API调用和处理后从工厂方法返回promise
- 如何使用angular工厂从rest api返回http get请求
- 在AngularJS中为$http设置一个服务或工厂来连接REST API的最佳实践
- 角度.js API 调用 - 我应该使用工厂吗?
- 使用工厂公开一个简单的API
- 有棱角的JS API使用工厂
- 在Angular 1.3中,用工厂或服务反复轮询API