Дайте совет как лучше в настоящий момент работать с rest api на angular2?

Интересует набор лучших практик или готовые компоненты для работы с REST на angular2 . (что то на подобие restangular ... но (https://github.com/mgonto/restangular/issues/1318)) (((
Заранее спасибо .
  • Вопрос задан
  • 468 просмотров
Решения вопроса 1
AMar4enko
@AMar4enko
Могу говорить только за себя - $resource и Restangular только усложняют управление состоянием в большом приложении. Перешел на Redux для управления состоянием. Есть сервис Transport с настройками, который реализует базовые операции, используется в Redux actions.
Примерно вот так:
@Injectable()
class Transport { 
  constructor(private _http: Http, private _config: TransportConfig) {
  }
  // Тут get, post, put, delete с использованием _config (apiEndpoint и.т.д)
}

class SessionActions {
  constructor(private _s: Store, private _t: Transport) {
  }

  loadSession() {
    this._s.dispatch(actionLoad());
    this._t.get('/session')
      .then(actionLoadCompleted)
      .catch(actionLoadError);
  }
}

@NgModule({
  id: 'store',
  providers: [
    Store,
    {
      provide: SessionActions,
      useFactory: (store, transport) => new SessionActions(store, transport),
      deps: [Store, Transport]   
    }  
  ]
})


Ну и в любом компоненте
constructor(private _s: Store, private _actions: SessionActions) {
  _s.subscribe('session.user', (user) => {
    this.user = user;
  });
  _actions.loadSession();
}


Большой плюс в том, что код управления состоянием может быть переиспользован с любым JS-фреймворком, он не привязан к Angular2
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Чтобы просто работать с REST службы Http вполне достаточно.
Но вот если хотите при этом показывать состояния запросов, ошибки, предотвращать повторную отправку форм и т.д., то получается больше рутинного кода (boilerplate), чем собственно логики обработки запросов.
Для себя эту проблему решил, написав библиотеку: ng2-rike
Использую её теперь на своих проектах. Сильно упрощает жизнь.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы