【发布时间】:2026-02-16 22:30:01
【问题描述】:
所以我有这个长期存在的 APIService 工厂,它创建函数以将 swagger 函数传递到 UI。这是工厂的 sn-p:
'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;
});
这是它在控制器中的用例的 sn-p:
$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 函数调用,那么对于 schema.json 的 30 个 $http 请求实际上是不需要的。问题是我无法弄清楚如何请求/存储该 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);
// });
但在此之后无法获取函数以正确读取它,或者像控制器期望的那样在 promise 中返回函数调用的结果。
我这里没有其他 JS 开发人员,所以我需要大家的帮助!非常感谢!
【问题讨论】:
-
您好,您使用的是什么版本的 swagger 定义?
-
Swagger UI - 2.0.24,swagger-angular-client - 0.1.11
标签: javascript angularjs json swagger swagger-ui