2016-11-17 1 views
1

В борьбе за раздельный код в приложениях большого масштаба я применил угловой шаблон. Видно, что у меня не было такого большого опыта работы с Angular, как у меня с другими структурами Javascript. Мне хотелось бы получить некоторый вклад в этот метод.Использование конечных точек API для интерфейса API в AngularJS

При работе с конечными точками вещи могут стать действительно грязными, и код начинает повторяться ESP с помощью AngularJs. Работая над проектами других людей, я был болен видеть ...

$http({ 
    method: 'GET', 
    url: '/posts' 
}).then(function successCallback(response) { 
    // code 
}, function errorCallback(response) { 
    // code 
}); 

Поэтому я создать компонент, который в основном взаимодействует компонент HTTP, но применять наши текущие успокоительные стандарты на месте (обработка статуса HTTP правильно), области, локальное хранилище ect, в сочетании с методом реализации сервисов для интерфейсов конечных точек, которые строго описывают конечные точки и как они будут вписываться в приложение.

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 
})); 

Можно ли увидеть любые негативы это делать?

+1

Я не буду делать обзор кода для вас, но в принципе, это работает. Я также делаю то же самое, но я связываю свои методы, чтобы иметь возможность называть более глубокие конечные точки, например. 'service.one ('topic', 1) .one ('subject', 33) .get ('comment', 3)'. FYI, есть также Restangular, который делает то же самое и прост в использовании. – trichetriche

+0

Выглядит хорошо, спасибо за отзыв –

ответ