【发布时间】:2017-03-31 16:23:44
【问题描述】:
为了在大型应用程序中分离代码,我实现了一个角度样板。看来我在 Angular 方面的经验不如我在其他 Javascript 框架方面的经验,我想对此方法有一些意见。
使用端点时,事情会变得非常混乱,代码开始使用 AngularJs 重复 ESP。从事其他人的项目,我讨厌看到...
$http({
method: 'GET',
url: '/posts'
}).then(function successCallback(response) {
// code
}, function errorCallback(response) {
// code
});
所以我构建了一个组件,它基本上是与 http 组件的接口,但应用了我们当前的 restful 标准(正确处理 http 状态)、范围、本地存储等,并结合了一种为端点接口实现服务的方法,该方法严格描述端点和他们将如何适应应用程序。
angular.module('Ripple').service('postModel', [function() {
'use strict';
return {
/**
* Rest Endpoint interface
* @type {Object}
*/
_rest: {
getPosts: {
url: 'http://localhost:3000/posts',
method: 'GET',
scopeUpdate: 'posts',
localStorage: false,
params: {
// Endpoint params
}
},
getPost: {
url: 'http://jsonplaceholder.typicode.com/posts/',
method: 'GET',
scopeUpdate: 'post',
localStorage: false,
pagination: false,
params: {
id: 1
}
},
getError: {
url: 'https://demo0079948.mockable.io/posts',
method: 'GET',
scopeUpdate: 'post',
localStorage: false,
pagination: false,
params: {
// none
}
},
},
/**
* Returns rest objects and allows to extend the params property
* @param {string} method
* @param {object} options
* @return {object}
*/
endPoint: function(endPointMethod, options) {
var defaults = this._rest[endPointMethod];
$.extend(defaults.params, options);
return defaults;
}
}
与 restHttpComponent 一起使用
restHttpComponent.request(postModel.endPoint('getPosts', {
dateFrom: currentDate
}));
任何人都可以看到这样做的负面影响吗?
【问题讨论】:
-
我不会为你做代码审查,但原则上,这是可行的。我也做同样的事情,但我链接我的方法以便能够调用更深的端点,例如
service.one('topic', 1).one('subject', 33).get('comment', 3)。仅供参考,还有 Restangular 可以做同样的事情并且易于使用。 -
看起来不错,感谢您的反馈
标签: javascript jquery angularjs api frontend