gpt4 book ai didi

angularjs - 后端 API 分组

转载 作者:行者123 更新时间:2023-12-02 23:15:17 25 4
gpt4 key购买 nike

在使用 AngularJS 的 $http 服务时,我发现很难管理后端的所有 url - 它们分布在 Controller 的代码周围。有时它们甚至是重复的。大多数都是 $http.get('/api/something').then(...) 的形式。

将它们全部放入不同的服务中听起来很不合理:它只是一行代码,可能只是一些小的修改(例如添加 header 等)。

其他解决方案可以将它们放入常量中,但在这种情况下,我仍然会使用看起来有点冗长的 $http.get(APIURLs.SomeURL)...

所以问题是:管理后端 URL 的最佳方法是什么?

最佳答案

目前,我想出了将它们分组为服务并将它们公开为对 $http 的调用的想法。这是我的解决方案: http://plnkr.co/edit/VjqXHBV54bmjKCuGJ4qX?p=preview

服务:

.factory('AdminAPI', function($http) {
var apiMap = {
'DeleteAuth': {url:'/api/oauth/delete',method:'PUT'},
'GetInvalidUser': {url:'/api/users/invalid',method:'GET'},
'CreateItem': {url:'/api/items/create',method:'POST'}
};
var api = {};
var prepareCall = function(config) {
return function(params) {
var requestConfig = angular.copy(config);
if (config.method=='GET')
requestConfig.params = params;
else
requestConfig.data = params;
return $http(requestConfig);
};
};
for(var name in apiMap)
api[name] = prepareCall(apiMap[name]);
return api;
});

在 Controller 中我做了类似的事情:

AdminAPI.DeleteAuth({data:123}).then(function(result) {
//
});

在这种情况下,我有一些抽象(不必将 $http 注入(inject) Controller ),因此单元测试变得更容易一些(我不必使用 $httpBackend 服务,只需模拟我的服务电话)。

关于angularjs - 后端 API 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com