在哪里进行 API 调用以及如何构建操作

Posted

技术标签:

【中文标题】在哪里进行 API 调用以及如何构建操作【英文标题】:Where to make API call and how to structure actions 【发布时间】:2019-06-30 15:25:11 【问题描述】:

我最近开始从 ngrx 迁移到 ngxs,并且有一个设计问题,即我应该将一些调用放在哪里。

在 NGRX 中,我将为与 api 的每次交互创建 3 个操作。比如:

GetEntities - 表示已进行初始 api 调用 GetEntitiesSuccess - 表示成功返回数据 GetEntitiesFail - 表示返回数据不成功

我将创建一个效果来监视实际调用 API 的 GetEntities 操作,并通过调用带有结果有效负载的成功/失败操作来处理响应。

在 NGXS 中,我是在操作发生时从存储本身进行 api 调用,还是应该使用其他一些 NGXS 对象来处理这些 API 调用,然后以与我在 ngrx 中相同的方式处理这些操作(通过每次调用创建多个操作)?

【问题讨论】:

【参考方案1】:

我见过的大多数示例,以及我如何使用它是从状态中的操作处理程序进行 API 调用,然后当 API 返回时立即修补状态。

然后在补丁调用之后,如果需要,您可以发送一个动作来指示成功/失败。像这样的:

@Action(GetSomeData)
loadData( patchState, dispatch: StateContext<MyDataModel>, payload: GetSomeData) 

   return this.myDataService.get(payload.id)
   .pipe(
      tap((data) => 
        patchState( data: data);
        // optionally dispatch here
        dispatch(new GetDataSuccess());
      )
   ); 
  

这个 q/a 也可能有用Ngxs - Actions/state to load data from backend

【讨论】:

以上是关于在哪里进行 API 调用以及如何构建操作的主要内容,如果未能解决你的问题,请参考以下文章

在 joomla 组件中,我应该在哪里存储数据库函数,以及如何调用它们?

如何在网页中调用百度地图api

清洁架构:在哪里进行 API 调用

AWS WAF API 调用记录在哪里?

如何正确地从 ReactJS + Redux 应用程序进行 REST 调用?

调用 API 时在哪里使用并发